Przeglądaj źródła

Ignore EINVAL from prctl(PR_SET_NO_NEW_PRIVS)

Ignore a EINVAL error here as it means that the kernel is too old
to understand this option. We should not fail hard in this case
but just ignore the error.

closes: 764066
Michael Vogt 11 lat temu
rodzic
commit
263a781e1f
1 zmienionych plików z 3 dodań i 2 usunięć
  1. 3 2
      apt-pkg/contrib/fileutl.cc

+ 3 - 2
apt-pkg/contrib/fileutl.cc

@@ -2189,8 +2189,9 @@ bool DropPrivileges()
 
 
 #if __gnu_linux__
 #if __gnu_linux__
    // see prctl(2), needs linux3.5
    // see prctl(2), needs linux3.5
-   int ret = prctl(PR_SET_NO_NEW_PRIVS, 1, 0,0, 0);
-   if(ret < 0)
+   int ret = prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0);
+   // ignore EINVAL - kernel is too old to understand the option
+   if(ret < 0 && errno != EINVAL)
       _error->Warning("PR_SET_NO_NEW_PRIVS failed with %i", ret);
       _error->Warning("PR_SET_NO_NEW_PRIVS failed with %i", ret);
 #endif
 #endif
    // Do not change the order here, it might break things
    // Do not change the order here, it might break things