aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2017-02-01 20:36:23 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2017-02-01 20:36:23 +0000
commit372db67b4de04e6fe86a44fdad34c7d0ec14fe6a (patch)
tree421bbefb89474fb4f95af741b1c63d736e807737
parentcd8ae5edfe8587fb39227ddcbb359f05649a14c6 (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/ada/adaint.c10
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");