Ошибка сегментации после перераспределения

Это мой код:

void  Available_firmware_version(){
char *version = (char *) malloc(2);
strcpy(version, "");
FILE *fp;
int status = 0;
char path[PATH_MAX];
fp = popen("swift list Manto", "r");

if (fp == NULL){
    printf("Error: Popen is NULL \n");
    return;
}

while (fgets(path, PATH_MAX, fp) != NULL){
    version = (char *) realloc(version, strlen(version) + strlen(path));
    strcat(version, path);
    printf("%s\n", version);
}

status = pclose(fp);
if (status == -1) {
    printf("Error: Popen not closed (pclose)\n");
    return;
}
free(version);
}

Когда я выполняю код, моя программа падает. Выход - ошибка сегментации перед командой pclose(fp). Когда я удаляю realloc, программа работает нормально. Может я что-то не так делаю с realloc?

0 ответов

Другие вопросы по тегам