Skip to content

Commit ee2e9af

Browse files
committed
cppcheck: fix null ptr dereference
Not sure why, but it looks like cppcheck doesn't run on pull requests... When adding : 336c3c8 I made a mistake, and called xmalloc() with a NULL name, which is printed when malloc fails. So: - fix the calling functions to include a name - add a check to make sure name isn't touched when if it is NULL This should resolve things. Signed-off-by: Robin Getz <[email protected]>
1 parent d2b9ff6 commit ee2e9af

File tree

9 files changed

+15
-11
lines changed

9 files changed

+15
-11
lines changed

tests/iio_adi_xflow_check.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ int main(int argc, char **argv)
166166
char unit;
167167
int ret;
168168

169-
argw = dup_argv(argc, argv);
169+
argw = dup_argv(MY_NAME, argc, argv);
170170

171171
ctx = handle_common_opts(MY_NAME, argc, argw, options, options_descriptions);
172172

tests/iio_attr.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -349,7 +349,7 @@ int main(int argc, char **argv)
349349
unsigned int i;
350350
char *wbuf = NULL;
351351

352-
argw = dup_argv(argc, argv);
352+
argw = dup_argv(MY_NAME, argc, argv);
353353

354354
ctx = handle_common_opts(MY_NAME, argc, argw, options, options_descriptions);
355355

tests/iio_common.c

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,12 @@ void * xmalloc(size_t n, const char * name)
4242
void *p = malloc(n);
4343

4444
if (!p && n != 0) {
45-
fprintf(stderr, "%s fatal error: allocating %zu bytes failed\n",
45+
if (name) {
46+
fprintf(stderr, "%s fatal error: allocating %zu bytes failed\n",
4647
name, n);
48+
} else {
49+
fprintf(stderr, "Fatal error: allocating %zu bytes failed\n", n);
50+
}
4751
exit(EXIT_FAILURE);
4852
}
4953

@@ -150,10 +154,10 @@ unsigned long int sanitize_clamp(const char *name, const char *argv,
150154
return (unsigned long int) val;
151155
}
152156

153-
char ** dup_argv(int argc, char * argv[])
157+
char ** dup_argv(char * name, int argc, char * argv[])
154158
{
155159
int i = 1;
156-
char** new_argv = xmalloc((argc + 1) * sizeof(char *), NULL);
160+
char** new_argv = xmalloc((argc + 1) * sizeof(char *), name);
157161

158162
for(int i = 0; i < argc; i++) {
159163
new_argv[i] = cmn_strndup(argv[i], NAME_MAX);

tests/iio_common.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ struct iio_context * handle_common_opts(char * name, int argc, char * const argv
5151
const struct option *options, const char *options_descriptions[]);
5252
void usage(char *name, const struct option *options, const char *options_descriptions[]);
5353

54-
char ** dup_argv(int argc, char * argv[]);
54+
char ** dup_argv(char * name, int argc, char * argv[]);
5555
void free_argw(int argc, char * argw[]);
5656

5757
/* https://pubs.opengroup.org/onlinepubs/009695399/basedefs/limits.h.html

tests/iio_genxml.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ int main(int argc, char **argv)
4747
int c, option_index = 0;
4848
size_t xml_len;
4949

50-
argw = dup_argv(argc, argv);
50+
argw = dup_argv(MY_NAME, argc, argv);
5151
ctx = handle_common_opts(MY_NAME, argc, argw, options, options_descriptions);
5252

5353
while ((c = getopt_long(argc, argv, "+" COMMON_OPTIONS, /* Flawfinder: ignore */

tests/iio_info.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ int main(int argc, char **argv)
6868
char git_tag[8];
6969
int ret;
7070

71-
argw = dup_argv(argc, argv);
71+
argw = dup_argv(MY_NAME, argc, argv);
7272

7373
iio_library_get_version(&major, &minor, git_tag);
7474
printf("Library version: %u.%u (git tag: %s)\n", major, minor, git_tag);

tests/iio_readdev.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ int main(int argc, char **argv)
200200
int timeout = -1;
201201
ssize_t ret;
202202

203-
argw = dup_argv(argc, argv);
203+
argw = dup_argv(MY_NAME, argc, argv);
204204

205205
ctx = handle_common_opts(MY_NAME, argc, argw, options, options_descriptions);
206206

tests/iio_reg.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ int main(int argc, char **argv)
8282
int c, option_index = 0;
8383
char * name;
8484

85-
argw = dup_argv(argc, argv);
85+
argw = dup_argv(MY_NAME, argc, argv);
8686

8787
ctx = handle_common_opts(MY_NAME, argc, argw, options, options_descriptions);
8888

tests/iio_writedev.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ int main(int argc, char **argv)
211211
bool cyclic_buffer = false;
212212
ssize_t ret;
213213

214-
argw = dup_argv(argc, argv);
214+
argw = dup_argv(MY_NAME, argc, argv);
215215

216216
ctx = handle_common_opts(MY_NAME, argc, argw, options, options_descriptions);
217217

0 commit comments

Comments
 (0)