Groups | Search | Server Info | Keyboard shortcuts | Login | Register
Groups > it.comp.os.linux.development > #40
| From | Giuseppe Della Bianca <bepi.zac@zac.adria.it> |
|---|---|
| Newsgroups | it.comp.os.linux.development |
| Subject | Re: Funzione strlen() |
| Date | 2017-06-04 12:20 +0200 |
| Organization | Aioe.org NNTP Server |
| Message-ID | <vf3d0e-feb.ln1@exnet.gdb.it> (permalink) |
| References | <oh0fj5$1adr$1@gioia.aioe.org> |
guido84 wrote:
]zac[
> char a[elle];
>
> if (argc==2)
> {
> sscanf(argv[1], "%s", a);
> printf("\n%u\n\n", strlen(a));
]zac[
> Il mio problema e' questo:
> - Quando ho immesso piu' di 80 caratteri, ho provocato segfault.
> - Ma come faccio a dirgli di uscire se son piu' di 80, quando e'
> lei stessa (strlen) che deve contarli?!
]zac[
Il buffer overflow e' causato dalla funzione sscanf che scrive nella
variabile fino ad andare oltre la dimensione della stessa.
Il codice scritto dopo non puo' prevenire un problema che e' gia' avvenuto.
E' compito del programmatore scrivere il codice impedendo alle varie
funzioni di comportarsi scorrettamente.
P.S.
Non credi che dovresti provare a cercare su google sscanf + segfault o
sscanf + buffer overflow?
(Il miglior modo di imparare e' sfruttare le risorse e le esperienze
liberamente disponibili cercando di capire quale e' quella giusta).
Back to it.comp.os.linux.development | Previous | Next — Previous in thread | Find similar
Funzione strlen() guido84 <guido84@invalid.invalid> - 2017-06-04 08:15 +0000
Re: Funzione strlen() Giovanni <lsodgf0@home.net.it> - 2017-06-04 11:39 +0200
Re: Funzione strlen() Giovanni <lsodgf0@home.net.it> - 2017-06-04 11:41 +0200
Re: Funzione strlen() guido84 <guido84@invalid.invalid> - 2017-06-04 14:13 +0000
Re: Funzione strlen() Giuseppe Della Bianca <bepi.zac@zac.adria.it> - 2017-06-04 12:20 +0200
csiph-web