c-code fehlermeldung

folgendes problem beim build eines C codes:
in function getPassWord
assignment makes integer from pointer without a cast


funktion sieht wie folgt aus:

Code:
static int getPassWord(int encrypting) {
    char *initialPasswd;

    initialPasswd = getpass("Password: ");
    password = calloc(strlen(initialPasswd) + 1, sizeof(unsigned char));
    strcpy(password, initialPasswd);
    clearString(initialPasswd);
    if(!encrypting) {
        return 1;
    }
    initialPasswd = getpass("Re-enter password: ");
    if(strcmp(initialPasswd, password)) {
        clearString(initialPasswd);
        clearString(password);
        free(password);
        return 0;
    }
    clearString(initialPasswd);
    return 1;
}
 
Vermutlich ist getpass() in deinem Programm nirgendwo deklariert, so dass der Compiler davon ausgeht, dass es int zurück gibt. pwd.h und unistd.h sind inkludiert?

Aber unabhängig von der Fehlermeldung, kann man mit deinem Programm wunderbar den RAM volllaufen lassen und damit den Rechner crashen. Du solltest initialPasswd statisch machen, damit du nachher nicht ein Array allozieren musst, das ggf. ein paar Millionen Zeichen enthält.
 
Naja zumindest theoretisch sollte der Kernel das Programm umlegen, bevor der Speicher wirklich vollläuft. Aber unresponsiv kanns durchaus werden D:
 
Praktisch legt der Kernel erst die Programme um, die längere Zeit nicht aktiv sind und jene mit niedrigerer Priorität. Das können zum Beispiel auch idlende Server-Programme sein.
 
So siehts wohl bei Linux aus, bei Windows werden die Ressourcenfordenden Programme gekillt. Oder zumindest werden meine gekillt, wenn sie zu greedy werden...
 
Zurück
Oben