IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

C sous solaris


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 37
    Par défaut C sous solaris
    Bonjour, je dois faire un programme qui tourne sous solaris,

    Je l'ai fait sur mon pc, tout va bien et il fonctionne, mais quand je veux le migrer sur la solaris, mais lors de l'exécution,il me fait des erreurs de segmentation, alors que sous linux pas.

    Quelle différence y a t'il?

    Merci

    Olivier

  2. #2
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    Sans le code, nous ne pouvons rien dire....

  3. #3
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Citation Envoyé par OlivierDotre
    Bonjour, je dois faire un programme qui tourne sous solaris,

    Je l'ai fait sur mon pc, tout va bien et il fonctionne, mais quand je veux le migrer sur la solaris, mais lors de l'exécution,il me fait des erreurs de segmentation, alors que sous linux pas.

    Quelle différence y a t'il?
    Tu as un comportement indéterminé dans ton code (je pencherais pour un débordement de buffer) qui passe, pour l'instant, inaperçu sous Linux et qui, coup de chance, plante sous Solaris.

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 37
    Par défaut
    Désolé pour le retard,

    Mais voici le code en question

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    int main (int argc, char *argv[]){
     
     
    	print_terminal("Main","Starting...");
    	/* Check Arguments */
    	if (argc != 3) 					error_exit("2 argument required for cracking");
    	the_crack = malloc(sizeof(argv[1]));
    	the_crack = argv[1];
    	the_salt = malloc(sizeof(char *));
    	the_salt = get_salt(the_crack);
    	printf("The crack is %s\n",the_crack);
    	//printf("The longueur of the word %i\n",the_length);
    	printf("The salt is %s\n",the_salt);
    	cracking();
    	return 1;
    }
    Il met l'erreur avant d'afficher "The crack is ..." Je ne sais pas vraiment ce qu'il faut changer. J'appelle main avec comme paramètre un code crypter dont il faut retrouver la valeur.

    Merci

    Olivier

  5. #5
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Outre le fait que l'on ne sait pas ce que font les fonctions get_salt() et crack(), voici deux-trois remarques :

    * Aucune verification sur le resultat de malloc, en cas d'erreur d'allocation ca va mal se passer.
    * Il manque la liberation des zones memoires allouees.
    * sizeof(argv[1]) ne fournit pas la taille de la chaine mais la taille d'un pointeur.
    *
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    the_crack = malloc(sizeof(argv[1]));
    the_crack = argv[1];
    Ici tu modifies le pointeur apres allocation. La zone allouee n'est plus reference ==> fuite memoire.

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 37
    Par défaut
    Ok, merci, je vais tacher de résoudre tout ça.

    Je suis débutant en C, faut bien commencer un jour:d

  7. #7
    Membre chevronné Avatar de pascal.barbier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2007
    Messages : 362
    Par défaut
    Je pense que le problème est effectivement dans :
    the_crack = malloc(sizeof(argv[1]));
    the_crack = argv[1];
    Je suppose que le but est de recopier la chaine reçue en argument de la ligne de commande dans la variable the_crack.

    Dans ce cas le plus simple est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    the_crack = strdup(argv[1]);
    Sinon si on veut utiliser malloc, il faut écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    the_crack = malloc(strlen(argv[1]));
    strcpy(the_crack, argv[1]);

Discussions similaires

  1. Spamassassin sous solaris
    Par wodel dans le forum Réseau
    Réponses: 2
    Dernier message: 12/02/2006, 12h53
  2. création database "oracle 10" sous "solaris 1
    Par elghayam dans le forum Oracle
    Réponses: 3
    Dernier message: 26/07/2005, 07h53
  3. interface avec opengl sous solaris
    Par lizou03 dans le forum OpenGL
    Réponses: 1
    Dernier message: 12/04/2005, 13h35
  4. outil de modelisation merise sous SOLARIS
    Par j_siyar dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 08/04/2005, 15h50
  5. [Sybase]Problème avec le BCP sous Solaris
    Par sl dans le forum Sybase
    Réponses: 3
    Dernier message: 09/09/2004, 07h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo