1
0
mirror of git://git.gnupg.org/gnupg.git synced 2024-12-22 10:19:57 +01:00

common: Fix off-by-one access in the new format_text.

* 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>
This commit is contained in:
Werner Koch 2015-11-26 18:04:54 +01:00
parent d226e67856
commit 61941a9849
No known key found for this signature in database
GPG Key ID: E3FDFF218E45B72B
2 changed files with 9 additions and 7 deletions

View File

@ -1328,6 +1328,11 @@ strtokenize (const char *string, const char *delim)
return result; 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 * char *
format_text (char *text, int in_place, int target_cols, int max_cols) 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. */ /* Chop off any trailing space. */
while (text[strlen (text) - 1] == ' ') trim_trailing_chars (text, strlen (text), " ");
text[strlen (text) - 1] = '\0';
/* If we inserted the trailing newline, then remove it. */ /* 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'; text[strlen (text) - 1] = '\0';
return text; return text;

View File

@ -148,12 +148,10 @@ char **strsplit (char *string, char delim, char replacement, int *count);
/* Tokenize STRING using the set of delimiters in DELIM. */ /* Tokenize STRING using the set of delimiters in DELIM. */
char **strtokenize (const char *string, const char *delim); char **strtokenize (const char *string, const char *delim);
/* Format a string so that it fits within about TARGET_COLS columns. /* 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); char *format_text (char *text, int in_place, int target_cols, int max_cols);
/*-- mapstrings.c --*/ /*-- mapstrings.c --*/
const char *map_static_macro_string (const char *string); const char *map_static_macro_string (const char *string);