From: ebotcazou Date: Wed, 1 Feb 2017 20:36:23 +0000 (+0000) Subject: PR ada/79309 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2ed67d5fff211f6e26b6c858445191a965938003;p=thirdparty%2Fgcc.git PR ada/79309 * adaint.c (__gnat_killprocesstree): Fix broken string handling. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@245103 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 8f394b03ca90..387cfbfc559b 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,9 @@ +2017-02-01 Eric Botcazou + Jakub Jelinek + + PR ada/79309 + * adaint.c (__gnat_killprocesstree): Fix broken string handling. + 2017-01-25 Maxim Ostapenko PR lto/79061 diff --git a/gcc/ada/adaint.c b/gcc/ada/adaint.c index 54a1d6e25c31..e5fea3eefe08 100644 --- a/gcc/ada/adaint.c +++ b/gcc/ada/adaint.c @@ -3396,14 +3396,16 @@ void __gnat_killprocesstree (int pid, int sig_num) { if ((d->d_type & DT_DIR) == DT_DIR) { - char statfile[64] = { 0 }; + char statfile[64]; int _pid, _ppid; /* read /proc//stat */ - strncpy (statfile, "/proc/", sizeof(statfile)); - strncat (statfile, d->d_name, sizeof(statfile)); - strncat (statfile, "/stat", sizeof(statfile)); + if (strlen (d->d_name) >= sizeof (statfile) - sizeof ("/proc//stat")) + continue; + strcpy (statfile, "/proc/"); + strcat (statfile, d->d_name); + strcat (statfile, "/stat"); FILE *fd = fopen (statfile, "r");