Odpowiedz na ten temat
Pokaż wyniki od 1 do 5 z 5

  1. Dołączył
    Feb 2010
    Postów
    97

    Cytuj | #1

    Witam

    W trakcie kompilacji poniższego programu za pomocą gcc pojawiają się dwa ostrzeżenia

    checkpass.c: In function ‘main’:
    checkpass.c:31: warning: cast to pointer from integer of different size
    checkpass.c:36: warning: cast to pointer from integer of different size

    Niestety jestem początkującym i nie bardzo wiem, jak sobie z tym poradzić. Wiem tylko tyle, że w we wspomnianych linijkach musiałem popełnić jakiś bląd, ponieważ program po kompilacji wyświetla komunikat blędu: segmetation fault.

    Kod php:

    /*
     * getpw* no longer returns an encrypted password.
     *
     * Compile with: gcc checkpass.c -o checkpass
     * Run with: ./checkpass
     */ 

    #include  <pwd.h>
    #include  <stdio.h>
    #include  <stdlib.h>  

    int main (int argcchar *argv[]) {
      const 
    char *user NULL;
      
    struct passwd *pwd;
      
    /* Set the username if it was supplied on the command
      ,* line. Bail out if we don 't end up with a username.
       */
      
    if (argc == 2)
        
    user argv[1];
      if(!
    user)
      {
        
    fprintf(stderr"Usage: checkpass <username>\n");
        exit(
    1);
      }

      
    /* Fetch to password entry. */
      
    if (pwd getpwnam(user))
      {
        
    char *password = (char *) getpass("Enter your password:");
         
        
    /* Encrypt the password using the encrypted passsword as salt.
         * See crypt(3) for complete details.
         */
        
    char *crypted = (char *) crypt(passwordpwd->pw_passwd);

        
    /* Are the two encrypted passwords identical? */
        
    if (strcmp(pwd->pw_passwdcrypted) == 0)
          
    printf("Success.\n");
        else
        {
          
    printf("Bad password: %s != %s\n"pwd->pw_passwdcrypted);
          return 
    1;
        }
      }
      else
      {
        
    fprintf(stderr"Could not find password for %s.\n"user);
        return 
    1;
      }
      return 
    0;

    Ostatnio edytowane przez wojtkow ; 20.07.2011 o 08:26


  2. Avatar Krzema
    Dołączył
    Jul 2008
    Skąd
    Gdańsk, PL
    Postów
    181

    Cytuj | #2

    Mógłbyś wkleić kod w znacznikach [CODE][/CODE]? Umknęły nagłówki, poza tym będzie łatwiej znaleźć linię, w której coś nie pasuje kompilatorowi.

  3. Avatar piotrpsz
    Dołączył
    Feb 2011
    Skąd
    Poznań, PL
    Postów
    17

    Cytuj | #3

    A sprawdzałeś czy uzyskane wskaźniki (np. crypted,password itd) są róże od NULL?

    ---------- Wpis dodano o 18:47 ---------- Poprzedni wpis dodano o 18:31 ----------

    U mnie progam dziala
    Ostatnio edytowane przez piotrpsz ; 19.07.2011 o 18:37
    Komputer: iMac, MacBook Pro
    Telefon: iPhone 3GS


  4. Dołączył
    Feb 2010
    Postów
    97

    Cytuj | #4

    @Krzema

    Poprawiłem, ale nadal nie wyświetla nazw tych trzech plików nagłówkowych, czyli pwd.h, stdio.h, stdlib.h.

    ---------- Wpis dodano o 21:24 ---------- Poprzedni wpis dodano o 21:14 ----------

    Cytat Napisał piotrpsz Zobacz post
    A sprawdzałeś czy uzyskane wskaźniki (np. crypted,password itd) są róże od NULL?

    ---------- Wpis dodano o 18:47 ---------- Poprzedni wpis dodano o 18:31 ----------

    U mnie progam dziala
    To dziwne u mnie program się wysypuje po wpisaniu hasła:

    ./checkpass mateo
    Enter your password:
    Segmentation fault
    Ostatnio edytowane przez mateo14 ; 19.07.2011 o 20:20

  5. Avatar wojtkow SM? Tylko S...


    Dołączył
    May 2007
    Skąd
    Poznań
    Postów
    3,621

    Cytuj | #5

    Cytat Napisał mateo14 Zobacz post
    @Krzema

    Poprawiłem, ale nadal nie wyświetla nazw tych trzech plików nagłówkowych, czyli pwd.h, stdio.h, stdlib.h.

    Zamiast znaczników [CODE][/CODE] używajcie znaczników [PHP][/PHP] - są dużo lepsze.
    Komputer: MBA 11.6" i7 1.8GHz 4GB RAM 256GB SSD, iMac 27" i7 2.8GHz 8GB RAM 240 GB SSD + 1 TB HDD
    Telefon: iPhone 4
    Odtwarzacz: iPhone 4
    Tablet: iPad (2012) 4G, iPad WiFi
    Moje programy w AppStore:
    iOS => Project Planner | Project Planner HD
    OSX => Project Planner Viewer
    Zgodnie z regulaminem nie udzielam porad poprzez PW - masz pytanie, pytaj na forum.

Odpowiedz na ten temat