|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Oct 2009
Messaggi: 72
|
[C] funzione sprintf
sprintf(var1, var2.arr);
var1 e' una variabile di stack var2.arr e' un'array di 80 byte, dichiarato sullo stack, ed e' stato riempito appena prima con un strncpy (quindi senza '\0') mi è stato detto che eseguire sprintf copiando da una variabile dove non e' garantito lo '\0' e' pericoloso, si puo' sporcare lo stack in modo definitivo, corrompendo gli Instruction Pointer delle varie chiamate e corrompendo anche i registri che sono pushati sullo stack assieme ai valori delle variabili con quale funzione conviene sostituirla? strncpy è ok? Grazie |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Jan 2014
Messaggi: 3826
|
Codice:
char * strncpy ( char * destination, const char * source, size_t num ); Quote:
|
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2095
|
Ti direi che la funzione giusto è snprintf() in cui indichi quanto al massimo si può scrivere è una "soluzione" per modo di dire se lo spazio non è sufficiente per mettere il tappo taglia la stringa
![]() La triste verità è che in C le stringhe non sono venute...
__________________
Cosmos C# Open Source Managed Operating System Cosmos Thread Ufficiale Cosmos Official Site Vuoi collaborare allo sviluppo? Unisciti alla chat! |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:45.