From 59521087f7c80c40525b17431f2988a815a842a0 Mon Sep 17 00:00:00 2001 From: Maximilien Siavelis <m@siav.pw> Date: 周一, 06 5月 2019 00:51:57 +0800 Subject: [PATCH] Merge pull request #20 from willamowius/master --- src/library/os/os-linux.c | 18 ++++++++++-------- 1 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/library/os/os-linux.c b/src/library/os/os-linux.c index 717373a..b4d9441 100644 --- a/src/library/os/os-linux.c +++ b/src/library/os/os-linux.c @@ -65,11 +65,11 @@ struct mntent *ent; int maxDrives, currentDrive, i, drive_found; - __ino64_t *statDrives; - DiskInfo *tmpDrives; - FILE *aFile; - DIR *disk_by_uuid_dir, *disk_by_label; - struct dirent *dir; + __ino64_t *statDrives = NULL; + DiskInfo *tmpDrives = NULL; + FILE *aFile = NULL; + DIR *disk_by_uuid_dir = NULL, *disk_by_label = NULL; + struct dirent *dir = NULL; FUNCTION_RETURN result; if (diskInfos != NULL) { @@ -87,6 +87,8 @@ aFile = setmntent("/proc/mounts", "r"); if (aFile == NULL) { /*proc not mounted*/ + free(tmpDrives); + free(statDrives); return FUNC_RET_ERROR; } @@ -107,7 +109,7 @@ if (drive_found == -1) { LOG_DEBUG("mntent: %s %s %d\n", ent->mnt_fsname, ent->mnt_dir, (unsigned long int)mount_stat.st_ino); - strcpy(tmpDrives[currentDrive].device, ent->mnt_fsname); + strncpy(tmpDrives[currentDrive].device, ent->mnt_fsname, 255-1); statDrives[currentDrive] = mount_stat.st_ino; drive_found = currentDrive; currentDrive++; @@ -167,7 +169,7 @@ if (stat(cur_dir, &sym_stat) == 0) { for (i = 0; i < currentDrive; i++) { if (sym_stat.st_ino == statDrives[i]) { - strncpy(tmpDrives[i].label, dir->d_name, 255); + strncpy(tmpDrives[i].label, dir->d_name, 255-1); printf("label %d %s %s\n", i, tmpDrives[i].label, tmpDrives[i].device); } @@ -288,7 +290,7 @@ strcat(proc_path, pidStr); strcat(proc_path, "/exe"); - int ch = readlink(proc_path, path, MAX_PATH); + int ch = readlink(proc_path, path, MAX_PATH-1); if (ch != -1) { path[ch] = '\0'; strncpy(buffer, path, ch); -- Gitblit v1.9.1