diff options
author | Elliott Hughes <enh@google.com> | 2014-11-21 19:13:01 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2014-11-21 19:13:01 +0000 |
commit | caed3d9fae1fd372dfa01cb60fbf157233c9052e (patch) | |
tree | ba1e23462baebfdb6e08ce0875cd691be72b39e6 | |
parent | bc2168c9b09f1d919e6419f475e3f4f69f3a4d3e (diff) | |
parent | 80bf9a456e0876cbca34f3ca844d0feb3329b782 (diff) | |
download | system_core-caed3d9fae1fd372dfa01cb60fbf157233c9052e.zip system_core-caed3d9fae1fd372dfa01cb60fbf157233c9052e.tar.gz system_core-caed3d9fae1fd372dfa01cb60fbf157233c9052e.tar.bz2 |
Merge "notify: dynamically allocate filename buffer"
-rw-r--r-- | toolbox/notify.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/toolbox/notify.c b/toolbox/notify.c index c983ed5..8ce346c 100644 --- a/toolbox/notify.c +++ b/toolbox/notify.c @@ -101,14 +101,17 @@ int notify_main(int argc, char *argv[]) else if(verbose >= 1) printf("%d: %08x \"%s\"\n", event->wd, event->mask, event->len ? event->name : ""); if(print_files && (event->mask & IN_MODIFY)) { - char filename[512]; + char* filename = file_names[event->wd + id_offset]; + char* alloc_buf = NULL; ssize_t read_len; char *display_name; int buflen; - strcpy(filename, file_names[event->wd + id_offset]); if(event->len) { - strcat(filename, "/"); - strcat(filename, event->name); + if(asprintf(&alloc_buf, "%s/%s", filename, event->name) < 0) { + fprintf(stderr, "asprintf failed, %s\n", strerror(errno)); + return 1; + } + filename = alloc_buf; } ffd = open(filename, O_RDONLY); display_name = (verbose >= 2 || event->len == 0) ? filename : event->name; @@ -132,6 +135,7 @@ int notify_main(int argc, char *argv[]) printf("%s: %s", display_name, buf); } close(ffd); + free(alloc_buf); } if(event_count && --event_count == 0) return 0; |