Przeglądaj źródła

s-s-d: Set return buffer length for sysctl(2) calls on */kFreeBSD

Guillem Jover 10 lat temu
rodzic
commit
3bda1e34af
2 zmienionych plików z 8 dodań i 3 usunięć
  1. 2 0
      debian/changelog
  2. 6 3
      utils/start-stop-daemon.c

+ 2 - 0
debian/changelog

@@ -15,6 +15,8 @@ dpkg (1.18.8) UNRELEASED; urgency=medium
   * Add new dpkg-source --no-overwrite-dir extraction option. Closes: #826334
   * Fix number of entries computation returned by sysctl() on */kFreeBSD in
     start-stop-daemon.
+  * Set return buffer length for sysctl(2) calls on */kFreeBSD in
+    start-stop-daemon.
   * Perl modules:
     - Use warnings::warnif() instead of carp() for deprecated warnings.
     - Add new format_range() method and deprecate dpkg() and rfc822() methods

+ 6 - 3
utils/start-stop-daemon.c

@@ -1524,12 +1524,13 @@ pid_is_child(pid_t pid, pid_t ppid)
 {
 	struct kinfo_proc kp;
 	int rc, mib[4];
-	size_t len = 0;
+	size_t len;
 
 	mib[0] = CTL_KERN;
 	mib[1] = KERN_PROC;
 	mib[2] = KERN_PROC_PID;
 	mib[3] = pid;
+	len = sizeof(kp);
 
 	rc = sysctl(mib, 4, &kp, &len, NULL, 0);
 	if (rc != 0 && errno != ESRCH)
@@ -1609,12 +1610,13 @@ pid_is_user(pid_t pid, uid_t uid)
 {
 	struct kinfo_proc kp;
 	int rc, mib[4];
-	size_t len = 0;
+	size_t len;
 
 	mib[0] = CTL_KERN;
 	mib[1] = KERN_PROC;
 	mib[2] = KERN_PROC_PID;
 	mib[3] = pid;
+	len = sizeof(kp);
 
 	rc = sysctl(mib, 4, &kp, &len, NULL, 0);
 	if (rc != 0 && errno != ESRCH)
@@ -1720,12 +1722,13 @@ pid_is_cmd(pid_t pid, const char *name)
 {
 	struct kinfo_proc kp;
 	int rc, mib[4];
-	size_t len = 0;
+	size_t len;
 
 	mib[0] = CTL_KERN;
 	mib[1] = KERN_PROC;
 	mib[2] = KERN_PROC_PID;
 	mib[3] = pid;
+	len = sizeof(kp);
 
 	rc = sysctl(mib, 4, &kp, &len, NULL, 0);
 	if (rc != 0 && errno != ESRCH)