From 755866fee7ea4a6c2871a95fa9081656fb5bef23 Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Tue, 7 Dec 2010 20:31:49 -0500 Subject: Check the return value of fgets --- src/bus.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/bus.c b/src/bus.c index 2c3f614..e28bda1 100644 --- a/src/bus.c +++ b/src/bus.c @@ -80,8 +80,8 @@ int scanbus_sysfs(nndevice_t** device) } else { - fgets(device[i]->model, sizeof(device[i]->model), fp); - device[i]->model[strlen(device[i]->model) - 1] = 0; + if(fgets(device[i]->model, sizeof(device[i]->model), fp) != NULL) + device[i]->model[strlen(device[i]->model) - 1] = 0; fclose(fp); } @@ -95,10 +95,11 @@ int scanbus_sysfs(nndevice_t** device) } else { - fgets(device[i]->vendor, sizeof(device[i]->model), fp); - /* Why does sysfs not terminate the string after the last character? Kernel 2.6 bug? + /* Why does sysfs not terminate the string after the last character? Kernel 2.6 bug? Here we are checking for the space character and terminating it manually. */ - device[i]->vendor[strind(device[i]->vendor, ' ')] = 0; + if((fgets(device[i]->vendor, sizeof(device[i]->model), fp)) != NULL) + device[i]->vendor[strind(device[i]->vendor, ' ')] = 0; + fclose(fp); } -- cgit