wie kann ich mit strcpy sicher

Will ich weisen Sie eine char* zu char* , wenn ich strcpy bekomme ich mehrere run-time-Speicher problem also ich habe fix it durch einfache Zuordnung mit = operator.
Kann irgend jemand erklären, was vorbereiten sollten, bevor Sie mit strcpy zur Vermeidung von Speicherproblemen.

EDIT:

int Function(const char* K,char* FileIN,char* FileOut,int DC)
{   
    char *fic_in,*n_fic,*fic_out,*fic_dec;

    unsigned char k[17];

        fic_in = (char*)malloc(60*sizeof(char));

        strcpy((char*)k,K);

        //strcpy(fic_in,FileIN);  //I remove this one
        fic_in=FileIN;            //and replace it by this
      ...
stackoverflow.com/questions/1258550/...
Wir vorübergehend nicht in der Lage, Ihre Meinung zu Lesen aufgrund technischer Schwierigkeiten. Zeigen Sie den code, bitte.
Sind Sie reservieren den nötigen Raum, die zuvor im Ziel-char*? Accoding zu verweisen (cplusplus.com/reference/clibrary/cstring/strcpy): "um Zu vermeiden, überläufe, die Größe des Arrays zeigte Ziel wird sein, lange genug, um enthalten die gleichen C-string als Quelle (einschließlich des abschließenden null-Zeichens), und sollten sich nicht überschneiden im Speicher mit der Quelle."
wahr. btw, ich habe nie gesagt, "strncpy", weder würde ich raten, es zu benutzen. Es ist sehr unsicher 😉
Nur für den Fall, Sie haben, Beispiel für einen "sicheren" Weg, um strncpy: buf[len-1] = 0; strncpy(buf, src, len); if (buf[len] != 0) report_error;. Ist Sie potenziell effizienter als die gleiche Sache mit strlen zu prüfen, die Länge, gefolgt von memcpy, aber dann wieder, es ist auch möglicherweise weniger effizient, vor allem, wenn src ist deutlich kürzer als len. Mit strlcpy es wäre if (strlcpy(dst, src, len) >= len) report_error;, die beginnt, schaut mich an, wie die Funktion "sicher ist" und nicht als "sicher verwendet werden können".

InformationsquelleAutor Oumaya | 2012-10-11

Schreibe einen Kommentar