about summary refs log tree commit diff
path: root/src/core/main-utils.c
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2023-10-04 11:44:49 +0200
committerMichael Biebl <biebl@debian.org>2023-10-04 11:44:49 +0200
commitd4d8b2b91f7ba000d97a8b2aab48c85000c11314 (patch)
tree4bae747b430c9dae89c22cbf298cbf6c862a52b8 /src/core/main-utils.c
parent05e4a733f2141995181a551854d5df929f084adf (diff)
New upstream version 1.44.2 upstream/1.44.2
Diffstat (limited to 'src/core/main-utils.c')
-rw-r--r--src/core/main-utils.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/core/main-utils.c b/src/core/main-utils.c
index c6fa05c0..9360d688 100644
--- a/src/core/main-utils.c
+++ b/src/core/main-utils.c
@@ -158,7 +158,8 @@ nm_main_utils_ensure_not_running_pidfile(const char *pidfile)
     gs_free char *contents     = NULL;
     gs_free char *proc_cmdline = NULL;
     gsize         len          = 0;
-    long          pid;
+    pid_t         pid;
+    gint64        pid64;
     const char   *process_name;
     const char   *prgname = g_get_prgname();
 
@@ -173,12 +174,13 @@ nm_main_utils_ensure_not_running_pidfile(const char *pidfile)
         return;
 
     errno = 0;
-    pid   = strtol(contents, NULL, 10);
-    if (pid <= 0 || pid > 65536 || errno)
+    pid64 = _nm_utils_ascii_str_to_int64(contents, 10, 0, G_MAXINT64, -1);
+    pid   = (pid_t) pid64;
+    if (pid <= 0 || (gint64) pid != pid64)
         return;
 
     nm_clear_g_free(&contents);
-    proc_cmdline = g_strdup_printf("/proc/%ld/cmdline", pid);
+    proc_cmdline = g_strdup_printf("/proc/%" G_GINT64_FORMAT "/cmdline", (gint64) pid);
     if (!g_file_get_contents(proc_cmdline, &contents, &len, NULL))
         return;
 
@@ -190,7 +192,10 @@ nm_main_utils_ensure_not_running_pidfile(const char *pidfile)
     if (strcmp(process_name, prgname) == 0) {
         /* Check that the process exists */
         if (kill(pid, 0) == 0) {
-            fprintf(stderr, _("%s is already running (pid %ld)\n"), prgname, pid);
+            fprintf(stderr,
+                    _("%s is already running (pid %" G_GINT64_FORMAT ")\n"),
+                    prgname,
+                    (gint64) pid);
             exit(1);
         }
     }