aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--common/ChangeLog4
-rw-r--r--common/vasprintf.c11
2 files changed, 13 insertions, 2 deletions
diff --git a/common/ChangeLog b/common/ChangeLog
index e1f2e79b7..2797c1140 100644
--- a/common/ChangeLog
+++ b/common/ChangeLog
@@ -1,3 +1,7 @@
+2002-08-20 Werner Koch <[email protected]>
+
+ * vasprintf.c: Hack to handle NULL for %s.
+
2002-08-09 Werner Koch <[email protected]>
* signal.c: New. Taken from GnuPG 1.1.91.
diff --git a/common/vasprintf.c b/common/vasprintf.c
index dbef4eb08..36121d8cc 100644
--- a/common/vasprintf.c
+++ b/common/vasprintf.c
@@ -68,7 +68,8 @@ vasprintf (char **result, const char *format, va_list *args)
}
while (strchr ("hlL", *p))
++p;
- /* Should be big enough for any format specifier except %s and floats. */
+ /* Should be big enough for any format specifier except %s
+ and floats. */
total_width += 30;
switch (*p)
{
@@ -92,7 +93,13 @@ vasprintf (char **result, const char *format, va_list *args)
total_width += 307;
break;
case 's':
- total_width += strlen (va_arg (ap, char *));
+ {
+ char *tmp = va_arg (ap, char *);
+ if (tmp)
+ total_width += strlen (tmp);
+ else /* in case the vsprintf does prints a text */
+ total_width += 25; /* e.g. "(null pointer reference)" */
+ }
break;
case 'p':
case 'n':