This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.20-493-gfb87ee9


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  fb87ee96d7dd0714d52004e4676629f8d9db732f (commit)
      from  01238691bb03f0110455b663439eecf9a58c8f83 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=fb87ee96d7dd0714d52004e4676629f8d9db732f

commit fb87ee96d7dd0714d52004e4676629f8d9db732f
Author: Vladimir A. Nazarenko <naszar@ya.ru>
Date:   Tue Jan 6 19:19:44 2015 -0800

    Fix incorrect mount table entry parsing in __getmntent_r
    
    When mount entry contains only four fields and have more then one space or
    tab at the and, mp.mnt_freq and mp.mnt_passno will be set to some specific
    values as side effect from parsing of previus mount entry. It is because
    sscanf(""," %d %d ", &a, &b) returns -1, but this case is unprocessed.
    Values of mp.mnt_freq and  mp.mnt_passno stays unchanged. This patch is
    attempt to fix described issue by removing trailing tabs and spaces.

diff --git a/ChangeLog b/ChangeLog
index b5aa6e5..9ca4f27 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2015-01-06  Vladimir A. Nazarenko  <naszar@ya.ru>
+
+.	[BZ #17273]
+	* misc/mntent_r.c (__getmntent_r): Cut off trailing spaces
+	and tabs from buffer before parsing fstab entry.
+	* misc/tst-mntent.c (main): Add test for mount entry with
+	trailing spaces and tabs.
+
 2015-01-06  Joseph Myers  <joseph@codesourcery.com>
 
 	[BZ #17748]
diff --git a/NEWS b/NEWS
index acb611a..8582885 100644
--- a/NEWS
+++ b/NEWS
@@ -11,13 +11,13 @@ Version 2.21
 
   6652, 10672, 12847, 12926, 13862, 14132, 14138, 14171, 14498, 15215,
   15884, 16191, 16469, 16617, 16619, 16657, 16740, 16857, 17192, 17266,
-  17344, 17363, 17370, 17371, 17411, 17460, 17475, 17485, 17501, 17506,
-  17508, 17522, 17555, 17570, 17571, 17572, 17573, 17574, 17581, 17582,
-  17583, 17584, 17585, 17589, 17594, 17601, 17608, 17616, 17625, 17630,
-  17633, 17634, 17635, 17647, 17653, 17657, 17664, 17665, 17668, 17682,
-  17717, 17719, 17722, 17723, 17724, 17725, 17732, 17733, 17744, 17745,
-  17746, 17747, 17775, 17777, 17780, 17781, 17782, 17793, 17796, 17797,
-  17806
+  17273, 17344, 17363, 17370, 17371, 17411, 17460, 17475, 17485, 17501,
+  17506, 17508, 17522, 17555, 17570, 17571, 17572, 17573, 17574, 17581,
+  17582, 17583, 17584, 17585, 17589, 17594, 17601, 17608, 17616, 17625,
+  17630, 17633, 17634, 17635, 17647, 17653, 17657, 17664, 17665, 17668,
+  17682, 17717, 17719, 17722, 17723, 17724, 17725, 17732, 17733, 17744,
+  17745, 17746, 17747, 17775, 17777, 17780, 17781, 17782, 17793, 17796,
+  17797, 17806
 
 * i386 memcpy functions optimized with SSE2 unaligned load/store.
 
diff --git a/misc/mntent_r.c b/misc/mntent_r.c
index 152a9a2..6159873 100644
--- a/misc/mntent_r.c
+++ b/misc/mntent_r.c
@@ -135,7 +135,11 @@ __getmntent_r (FILE *stream, struct mntent *mp, char *buffer, int bufsiz)
 
       end_ptr = strchr (buffer, '\n');
       if (end_ptr != NULL)	/* chop newline */
-	*end_ptr = '\0';
+	{
+	  while (end_ptr[-1] == ' ' || end_ptr[-1] == '\t')
+            end_ptr--;
+	  *end_ptr = '\0';
+	}
       else
 	{
 	  /* Not the whole line was read.  Do it now but forget it.  */
diff --git a/misc/tst-mntent.c b/misc/tst-mntent.c
index 802b56e..876c89f 100644
--- a/misc/tst-mntent.c
+++ b/misc/tst-mntent.c
@@ -73,7 +73,27 @@ main (int argc, char *argv[])
 	  puts ("Error while reading written entry back in");
 	  result = 1;
 	}
-    }
+
+      /* Part III: Entry with whitespaces at the end of a line. */
+      rewind (fp);
+
+      fputs ("/foo\\040dir /bar\\040dir auto bind \t \n", fp);
+
+      rewind (fp);
+
+      mnt = getmntent (fp);
+
+      if (strcmp (mnt->mnt_fsname, "/foo dir") != 0
+	  || strcmp (mnt->mnt_dir, "/bar dir") != 0
+	  || strcmp (mnt->mnt_type, "auto") != 0
+	  || strcmp (mnt->mnt_opts, "bind") != 0
+	  || mnt->mnt_freq != 0
+	  || mnt->mnt_passno != 0)
+	{
+	  puts ("Error while reading entry with trailing whitespaces");
+	  result = 1;
+	}
+   }
 
   return result;
 }

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog         |    8 ++++++++
 NEWS              |   14 +++++++-------
 misc/mntent_r.c   |    6 +++++-
 misc/tst-mntent.c |   22 +++++++++++++++++++++-
 4 files changed, 41 insertions(+), 9 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]