]> git.pld-linux.org Git - packages/libcgroup.git/blob - libcgroup-0.41-prevent-buffer-overflow.patch
d4051599b784676fb0b390f345ab3a9bc659a9c9
[packages/libcgroup.git] / libcgroup-0.41-prevent-buffer-overflow.patch
1 From 9c80e2cb4bca26993a12027c46a274bb43645630 Mon Sep 17 00:00:00 2001
2 From: =?UTF-8?q?Nikola=20Forr=C3=B3?= <nforro@redhat.com>
3 Date: Wed, 22 Jun 2016 14:12:46 +0200
4 Subject: [PATCH 3/6] api.c: fix potential buffer overflow
5 MIME-Version: 1.0
6 Content-Type: text/plain; charset=UTF-8
7 Content-Transfer-Encoding: 8bit
8
9 It is assumed that arguments read from /proc/<pid>/cmdline don't exceed
10 buf_pname buffer size, which is FILENAME_MAX - 1 characters, but that's
11 not always the case.
12
13 Add check to prevent buffer overflow and discard the excessive part of
14 an argument.
15
16 Signed-off-by: Nikola Forró <nforro@redhat.com>
17 ---
18  src/api.c | 6 +++++-
19  1 file changed, 5 insertions(+), 1 deletion(-)
20
21 diff --git a/src/api.c b/src/api.c
22 index 217d6c9..4d98081 100644
23 --- a/src/api.c
24 +++ b/src/api.c
25 @@ -4065,13 +4065,17 @@ static int cg_get_procname_from_proc_cmdline(pid_t pid,
26  
27         while (c != EOF) {
28                 c = fgetc(f);
29 -               if ((c != EOF) && (c != '\0')) {
30 +               if ((c != EOF) && (c != '\0') && (len < FILENAME_MAX - 1)) {
31                         buf_pname[len] = c;
32                         len++;
33                         continue;
34                 }
35                 buf_pname[len] = '\0';
36  
37 +               if (len == FILENAME_MAX - 1)
38 +                       while ((c != EOF) && (c != '\0'))
39 +                               c = fgetc(f);
40 +
41                 /*
42                  * The taken process name from /proc/<pid>/status is
43                  * shortened to 15 characters if it is over. So the
44 -- 
45 2.17.0
46
This page took 0.683724 seconds and 2 git commands to generate.