Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 22/10/2008, à 23:50

Yeye75

'Problème de compilation'

Bonjour tous le monde,

Voici maintenant 3 jours que je suis bloqué sur un bug :-(

Le ./configure ce passe bien, mais le make ne veut pas :'(

L'erreur :

GIDS -c server_stats.c
In function ‘open’,
    inlined from ‘server_stats_save’ at server_stats.c:328:
/usr/include/bits/fcntl2.h:51: erreur: call to ‘__open_missing_mode’ declared with attribute error: open with O_CREAT in second argument needs 3 arguments
make[5]: *** [server_stats.o] Erreur 1
make[5]: quittant le répertoire « /usr/src/snort_inline-2.4.5/src/preprocessors/flow/portscan »
make[4]: *** [all-recursive] Erreur 1
make[4]: quittant le répertoire «  /usr/src/snort_inline-2.4.5/src/preprocessors/flow »
make[3]: *** [all-recursive] Erreur 1
make[3]: quittant le répertoire « /usr/src/snort_inline-2.4.5/src/preprocessors »
make[2]: *** [all-recursive] Erreur 1
make[2]: quittant le répertoire « /usr/src/snort_inline-2.4.5/src »
make[1]: *** [all-recursive] Erreur 1
make[1]: quittant le répertoire « /usr/src/snort_inline-2.4.5 »
make: *** [all] Erreur 2

Si quelqu'un a une idée smile

Je suis à l'écoute .

#2 Le 22/10/2008, à 23:54

Yeye75

Re : 'Problème de compilation'

Oupss, me suis trompé dans le copier coller .

Voici l'erreur ^^

-aliasing -c server_stats.c
In function ‘open’,
    inlined from ‘server_stats_save’ at server_stats.c:328:
/usr/include/bits/fcntl2.h:51: erreur: call to ‘__open_missing_mode’ declared with attribute error: open with O_CREAT in second argument needs 3 arguments
make[5]: *** [server_stats.o] Erreur 1
make[5]: quittant le répertoire « /usr/src/snort_inline-2.6.1.5/src/preprocessors/flow/portscan »
make[4]: *** [all-recursive] Erreur 1
make[4]: quittant le répertoire « /usr/src/snort_inline-2.6.1.5/src/preprocessors/flow »
make[3]: *** [all-recursive] Erreur 1
make[3]: quittant le répertoire « /usr/src/snort_inline-2.6.1.5/src/preprocessors »
make[2]: *** [all-recursive] Erreur 1
make[2]: quittant le répertoire « /usr/src/snort_inline-2.6.1.5/src »
make[1]: *** [all-recursive] Erreur 1
make[1]: quittant le répertoire « /usr/src/snort_inline-2.6.1.5 »
make: *** [all] Erreur 2

#3 Le 23/10/2008, à 16:00

yeye75

Re : 'Problème de compilation'

Personne n'a une idée ? sad

#4 Le 23/10/2008, à 17:06

nicolas.sitbon

Re : 'Problème de compilation'

Dans ton appel à la fonction open() dans server_stats.c:328, dans le troisième paramètre, mets :

open (filename, O_CREAT, S_IRUSR|S_IWUSR);

Dernière modification par nicolas.sitbon (Le 23/10/2008, à 17:06)

Hors ligne

#5 Le 24/10/2008, à 20:22

yeye75

Re : 'Problème de compilation'

Bonsoir,

Merci pour ta réponse, mais malheureusement, je ne trouve pas ce fichier sad

Ptite question au passage, peux tu m'expliquer ta ligne de code ? tongue

Tant qu'a faire, si je peux apprendre ^^

Encore merci wink

#6 Le 24/10/2008, à 20:59

Link31

Re : 'Problème de compilation'

Le fichier est /usr/src/snort_inline-2.6.1.5/src/preprocessors/flow/portscan/server_stats.c, ligne 328.
L'erreur vient du fait qu'il faut indiquer explicitement les permissions du fichier à créer (man 2 open).

Hors ligne

#7 Le 26/10/2008, à 17:59

yeye75

Re : 'Problème de compilation'

Bonsoir,

Voici ce que j'ai dans mon server_starts

int server_stats_save(SERVER_STATS *ssp, char *filename)
{
    SFXHASH_NODE *nodep;
    unsigned char buf[STATSREC_SIZE];
    int fd;
    
    if(!filename || !ssp)
        return FLOW_ENULL;
#ifndef O_SYNC
#define O_SYNC O_FSYNC
#endif

    /* open this description, create it if necessary, always wait on
     * sync to disk w/ every write, only write */
    
fd = open(filename, O_CREAT|O_TRUNC|O_SYNC|O_WRONLY);    [b]<=== ligne 328[/b]
    

    if(fd < 0)
    {
        if(s_debug)
        {
            flow_printf("%s was not found\n", filename);
        }
        return FLOW_NOTFOUND;
    }

    /* this is a crappy parser... that's par for the course */
    for( nodep = sfxhash_ghead(ssp->ipv4_table);
         nodep != NULL;
         nodep = sfxhash_gnext(nodep) )
    {
        SERVER_KEY *kp = (SERVER_KEY *) nodep->key;
        u_int32_t count = *(u_int32_t *) nodep->data;
        u_int8_t  family = '4';
        u_int32_t ipv4_address;
        u_int16_t port;
        u_int8_t  protocol;
        ssize_t  wbytes = 0;
        ssize_t wsize;
            
        
        count        = ntohl(count);       
        ipv4_address = htonl(kp->address);
        port         = htons((u_int16_t) kp->port);
        protocol     = (u_int8_t) kp->protocol;

        memcpy(buf + FAMILY_OFFSET,   &family,        FAMILY_SIZE);
        memcpy(buf + IPV4_OFFSET,     &ipv4_address,  IPV4_SIZE);       
        memcpy(buf + PORT_OFFSET,     &port,          PORT_SIZE);
        memcpy(buf + IP_PROTO_OFFSET, &protocol,      IP_PROTO_SIZE);
        memcpy(buf + COUNT_OFFSET,    &count,         COUNT_SIZE);

        /* now make sure we get a full record on disk */
        while(wbytes < STATSREC_SIZE)
        {
            /* write the number of bytes we already have - the #
             * already written */
            wsize = write(fd, buf, (STATSREC_SIZE - wbytes));

            if(wsize < 0)
            {
                /* this record was truncated */
                flow_printf("Truncated Server Record!\n");
                return FLOW_EINVALID;
            }
            else
            {
                wbytes += wsize;
            }
        }
    }
    
    return FLOW_SUCCESS;
}

Désolé, mais étant noobie en la matière, je ne sais pas comment mettre les droits sad

Si tu as un lien qui pourrais m'expliquer, je suis preneur wink

Help me please

Hors ligne

#8 Le 26/10/2008, à 18:29

Link31

Re : 'Problème de compilation'

nicolas.sitbon t'a déjà dit comment faire.

Après, je n'ai pas la moindre idée des droits précis nécessaires pour ton application.

Hors ligne

#9 Le 26/10/2008, à 19:08

yeye75

Re : 'Problème de compilation'

Malheureusement, la solution de nicolas.sitbon ne fonctionne pas hmm

Hors ligne

#10 Le 26/10/2008, à 22:25

nicolas.sitbon

Re : 'Problème de compilation'

Soyons fou!

fd = open(filename, O_CREAT|O_TRUNC|O_SYNC, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH);

Hors ligne

#11 Le 27/10/2008, à 19:53

yeye75

Re : 'Problème de compilation'

Ok ca fonctionne, nikel !

Merci à vous pour ces réponses rapide, j'espère pouvoir en faire de même plus tard tongue

Encore merci, sujet résolu ...

Hors ligne

#12 Le 22/01/2009, à 23:40

lamsoun

Re : 'Problème de compilation'

Salut tout le monde,

j'ai le même problème mais je ne trouve pas le fichier /usr/src/snort_inline-2.6.1.5/src/preprocessors/flow/portscan/server_stats.c

need help !!! :s

merci