commit-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[hurd] 10/15: Fix ps -o %r infinite loop


From: Samuel Thibault
Subject: [hurd] 10/15: Fix ps -o %r infinite loop
Date: Sun, 05 Jul 2015 00:42:00 +0000

This is an automated email from the git hooks/post-receive script.

sthibault pushed a commit to branch upstream
in repository hurd.

commit f5bc22b18e3c3042dbf7e4ecc38e046b13a2a992
Author: Esa Peuha <address@hidden>
Date:   Fri Jun 5 20:28:28 2015 +0530

    Fix ps -o %r infinite loop
    
    * libps/fmt.c (_fmt_create): When nothing at all was recognized, break out
    instead of looping.
---
 libps/fmt.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/libps/fmt.c b/libps/fmt.c
index 0465555..580b097 100644
--- a/libps/fmt.c
+++ b/libps/fmt.c
@@ -68,6 +68,8 @@ _fmt_create (char *src, int posix, struct ps_fmt_specs 
*fmt_specs,
   src = new_fmt->src;
   while (*src != '\0')
     {
+      char *start = src;
+
       if (field - fields == fields_alloced)
        /* Time to grow FIELDS to make room for more.  */
        {
@@ -172,6 +174,19 @@ _fmt_create (char *src, int posix, struct ps_fmt_specs 
*fmt_specs,
            /* This field spec doesn't have a name, so use its flags fields
               to set the global ones, and skip it.  */
            {
+             /* if we didn't use any chars, don't loop indefinitely */
+             if (src == start)
+               {
+                 if (err_string)
+                   asprintf (err_string, "%s: Unknown format spec", src);
+
+                 FREE (new_fmt->src);
+                 FREE (new_fmt);
+                 FREE (fields);
+
+                 return EINVAL;
+               }
+
              global_clr_flags = clr_flags;
              global_inv_flags = inv_flags;
              continue;

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-hurd/hurd.git



reply via email to

[Prev in Thread] Current Thread [Next in Thread]