common: Fix off-by-one access in the new format_text.
authorWerner Koch <wk@gnupg.org>
Thu, 26 Nov 2015 17:04:54 +0000 (18:04 +0100)
committerWerner Koch <wk@gnupg.org>
Thu, 26 Nov 2015 17:05:27 +0000 (18:05 +0100)
* common/stringhelp.c (format_text): Use existsing fucntion to trim
trailing spaces.  Fix off-by-one access.

Signed-off-by: Werner Koch <wk@gnupg.org>
common/stringhelp.c
common/stringhelp.h

index 6748d1e..e8b990a 100644 (file)
@@ -1328,6 +1328,11 @@ strtokenize (const char *string, const char *delim)
   return result;
 }
 
+
+/* Format a string so that it fits within about TARGET_COLS columns.
+   If IN_PLACE is 0, then TEXT is copied to a new buffer, which is
+   returned.  Otherwise, TEXT is modified in place and returned.
+   Normally, target_cols will be 72 and max_cols is 80.  */
 char *
 format_text (char *text, int in_place, int target_cols, int max_cols)
 {
@@ -1448,10 +1453,9 @@ format_text (char *text, int in_place, int target_cols, int max_cols)
     }
 
   /* Chop off any trailing space.  */
-  while (text[strlen (text) - 1] == ' ')
-    text[strlen (text) - 1] = '\0';
+  trim_trailing_chars (text, strlen (text), " ");
   /* If we inserted the trailing newline, then remove it.  */
-  if (! copied_last_space && text[strlen (text) - 1] == '\n')
+  if (! copied_last_space && *text && text[strlen (text) - 1] == '\n')
     text[strlen (text) - 1] = '\0';
 
   return text;
index 9ff062b..c813662 100644 (file)
@@ -148,12 +148,10 @@ char **strsplit (char *string, char delim, char replacement, int *count);
 /* Tokenize STRING using the set of delimiters in DELIM.  */
 char **strtokenize (const char *string, const char *delim);
 
-/* Format a string so that it fits within about TARGET_COLS columns.
-   If IN_PLACE is 0, then TEXT is copied to a new buffer, which is
-   returned.  Otherwise, TEXT is modified in place and returned.
-   Normally, target_cols will be 72 and max_cols is 80.  */
+/* Format a string so that it fits within about TARGET_COLS columns.  */
 char *format_text (char *text, int in_place, int target_cols, int max_cols);
 
+
 /*-- mapstrings.c --*/
 const char *map_static_macro_string (const char *string);