trace: add missing limits.h include
[project/procd.git] / trace / trace.c
index 5941f90661204e50d615f293404c57e86f202485..1004ae92a458f9109627031ff008983c346f197a 100644 (file)
@@ -23,6 +23,7 @@
 #include <errno.h>
 #include <string.h>
 #include <syslog.h>
+#include <limits.h>
 
 #include <libubox/uloop.h>
 #include <libubox/blobmsg.h>
@@ -53,7 +54,7 @@
 } while (0)
 
 #define ERROR(fmt, ...) do { \
-       syslog(0, "utrace: "fmt, ## __VA_ARGS__); \
+       syslog(LOG_ERR, "utrace: "fmt, ## __VA_ARGS__); \
        fprintf(stderr, "utrace: "fmt, ## __VA_ARGS__); \
 } while (0)
 
@@ -176,7 +177,7 @@ int main(int argc, char **argv, char **envp)
        if (child == 0) {
                char **_argv = calloc(argc + 1, sizeof(char *));
                char **_envp;
-               char preload[] = "LD_PRELOAD=/lib/libpreload-trace.so";
+               char *preload = "LD_PRELOAD=/lib/libpreload-trace.so";
                int envc = 1;
                int ret;
 
@@ -187,10 +188,13 @@ int main(int argc, char **argv, char **envp)
 
                _envp = calloc(envc, sizeof(char *));
                memcpy(&_envp[1], _envp, envc * sizeof(char *));
-               *envp = preload;
+               *_envp = preload;
 
-               ret = execve(_argv[0], _argv, envp);
+               ret = execve(_argv[0], _argv, _envp);
                ERROR("failed to exec %s: %s\n", _argv[0], strerror(errno));
+
+               free(_argv);
+               free(_envp);
                return ret;
        }