Fix: use off_t type for lseek function return value to avoid overflow
[lttng-tools.git] / src / common / utils.c
index df55dc9fb65880db9dc75373c390634849e0fd34..24c3b8ca146ff1fafe8de8da3dd059c7f947f415 100644 (file)
@@ -189,6 +189,10 @@ char *utils_partial_realpath(const char *path, char *resolved_path, size_t size)
 error:
        free(resolved_path);
        free(cut_path);
+       free(try_path);
+       if (try_path_prev != try_path) {
+               free(try_path_prev);
+       }
        return NULL;
 }
 
@@ -524,7 +528,7 @@ int utils_create_lock_file(const char *filepath)
                S_IRGRP | S_IWGRP);
        if (fd < 0) {
                PERROR("open lock file %s", filepath);
-               ret = -1;
+               fd = -1;
                goto error;
        }
 
@@ -850,6 +854,7 @@ int utils_rotate_stream_file(char *path_name, char *file_name, uint64_t size,
                PERROR("Closing tracefile");
                goto error;
        }
+       *stream_fd = -1;
 
        if (count > 0) {
                /*
@@ -1330,15 +1335,17 @@ LTTNG_HIDDEN
 int utils_truncate_stream_file(int fd, off_t length)
 {
        int ret;
+       off_t lseek_ret;
 
        ret = ftruncate(fd, length);
        if (ret < 0) {
                PERROR("ftruncate");
                goto end;
        }
-       ret = lseek(fd, length, SEEK_SET);
-       if (ret < 0) {
+       lseek_ret = lseek(fd, length, SEEK_SET);
+       if (lseek_ret < 0) {
                PERROR("lseek");
+               ret = -1;
                goto end;
        }
 end:
@@ -1347,7 +1354,7 @@ end:
 
 static const char *get_man_bin_path(void)
 {
-       char *env_man_path = getenv(DEFAULT_MAN_BIN_PATH_ENV);
+       char *env_man_path = lttng_secure_getenv(DEFAULT_MAN_BIN_PATH_ENV);
 
        if (env_man_path) {
                return env_man_path;
@@ -1370,11 +1377,11 @@ int utils_show_man_page(int section, const char *page_name)
        /*
         * Execute man pager.
         *
-        * We provide --manpath to man here because LTTng-tools can
+        * We provide -M to man here because LTTng-tools can
         * be installed outside /usr, in which case its man pages are
         * not located in the default /usr/share/man directory.
         */
-       ret = execlp(man_bin_path, "man", "--manpath", MANPATH,
+       ret = execlp(man_bin_path, "man", "-M", MANPATH,
                section_string, page_name, NULL);
        return ret;
 }
This page took 0.027735 seconds and 4 git commands to generate.