Come sfocare oggetti condivisi?

1

So che ci sono state domande simili su quell'argomento, ma penso che la mia differisca dalle altre. Ho questa applicazione che sono in grado di bloccare, ma l'errore sembra accadere all'interno di una libreria di oggetti condivisa, che viene caricata dall'applicazione. Quindi la mia domanda è, come posso procedere ulteriormente? Ho allegato l'applicazione a GDB e ho lasciato che l'applicazione si bloccasse. Ma come potrei scoprire se l'errore si basa sulla libreria?

    
posta Dirk 25.04.2014 - 11:58
fonte

1 risposta

0

Non puoi. Ad esempio, se chiami printf() con NULL come stringa di formato, otterrai un segfault nella libc, sebbene non sia un errore libc.

Ma puoi essere quasi sicuro che la libreria condivisa non controlla alcune delle strutture dati che riceve dal programma principale (o da un'altra DLL). Le librerie C non hanno bisogno di farlo (normalmente).

E se qualcosa non viene controllato contro il dereferenziamento puntatore NULL, probabilmente non è stato controllato anche contro il sovraccarico del buffer. E tali errori sono principalmente causati dalla NULL-dereferenziazione. Dovresti sempre controllare il livello di asm (anche con gdb), cosa ha causato l'arresto anomalo e fare una supposizione, che cosa erano al livello C.

    
risposta data 15.05.2014 - 18:37
fonte

Leggi altre domande sui tag