diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2017-02-01 20:36:23 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2017-02-01 20:36:23 +0000 |
commit | 372db67b4de04e6fe86a44fdad34c7d0ec14fe6a (patch) | |
tree | 421bbefb89474fb4f95af741b1c63d736e807737 | |
parent | cd8ae5edfe8587fb39227ddcbb359f05649a14c6 (diff) | |
download | gcc-372db67b4de04e6fe86a44fdad34c7d0ec14fe6a.zip gcc-372db67b4de04e6fe86a44fdad34c7d0ec14fe6a.tar.gz gcc-372db67b4de04e6fe86a44fdad34c7d0ec14fe6a.tar.bz2 |
re PR ada/79309 (incorrectly bounded calls to strncat in adaint.c)
PR ada/79309
* adaint.c (__gnat_killprocesstree): Fix broken string handling.
Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
From-SVN: r245103
-rw-r--r-- | gcc/ada/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/ada/adaint.c | 10 |
2 files changed, 12 insertions, 4 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 8f394b0..387cfbf 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,9 @@ +2017-02-01 Eric Botcazou <ebotcazou@adacore.com> + Jakub Jelinek <jakub@redhat.com> + + PR ada/79309 + * adaint.c (__gnat_killprocesstree): Fix broken string handling. + 2017-01-25 Maxim Ostapenko <m.ostapenko@samsung.com> PR lto/79061 diff --git a/gcc/ada/adaint.c b/gcc/ada/adaint.c index 54a1d6e..e5fea3e 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/<PID>/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"); |