summaryrefslogtreecommitdiffstats
path: root/drivers/staging/iio/Documentation/iio_utils.h
diff options
context:
space:
mode:
authorPeter Meerwald2012-06-25 23:13:25 +0200
committerJonathan Cameron2012-06-30 11:12:24 +0200
commita4d429e362d873414046c78724f3d6a7978bc2fd (patch)
tree2377440a0f19efc3fc0898b6e3edcf7aa8800b3f /drivers/staging/iio/Documentation/iio_utils.h
parentiio staging: fix potential resource leak in generic_buffer (diff)
downloadkernel-qcow2-linux-a4d429e362d873414046c78724f3d6a7978bc2fd.tar.gz
kernel-qcow2-linux-a4d429e362d873414046c78724f3d6a7978bc2fd.tar.xz
kernel-qcow2-linux-a4d429e362d873414046c78724f3d6a7978bc2fd.zip
iio staging: fix potential memory/resource leaks in find_type_by_name()
Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Diffstat (limited to 'drivers/staging/iio/Documentation/iio_utils.h')
-rw-r--r--drivers/staging/iio/Documentation/iio_utils.h15
1 files changed, 11 insertions, 4 deletions
diff --git a/drivers/staging/iio/Documentation/iio_utils.h b/drivers/staging/iio/Documentation/iio_utils.h
index ab788594b202..81a628975cdd 100644
--- a/drivers/staging/iio/Documentation/iio_utils.h
+++ b/drivers/staging/iio/Documentation/iio_utils.h
@@ -472,23 +472,30 @@ inline int find_type_by_name(const char *name, const char *type)
+ strlen(type)
+ numstrlen
+ 6);
- if (filename == NULL)
+ if (filename == NULL) {
+ closedir(dp);
return -ENOMEM;
+ }
sprintf(filename, "%s%s%d/name",
iio_dir,
type,
number);
nameFile = fopen(filename, "r");
- if (!nameFile)
+ if (!nameFile) {
+ free(filename);
continue;
+ }
free(filename);
fscanf(nameFile, "%s", thisname);
- if (strcmp(name, thisname) == 0)
- return number;
fclose(nameFile);
+ if (strcmp(name, thisname) == 0) {
+ closedir(dp);
+ return number;
+ }
}
}
}
+ closedir(dp);
return -ENODEV;
}