@@ -143,7 +143,7 @@ _dl_debug_vdprintf (int fd, int tag_p, const char *fmt, va_list arg)
++fmt;
}
- /* See whether with comes from a parameter. Note that no other
+ /* See whether width comes from a parameter. Note that no other
way to specify the width is implemented. */
if (*fmt == '*')
{
@@ -205,9 +205,10 @@ _dl_debug_vdprintf (int fd, int tag_p, const char *fmt, va_list arg)
case 's':
/* Get the string argument. */
iov[niov].iov_base = va_arg (arg, char *);
- iov[niov].iov_len = strlen (iov[niov].iov_base);
if (prec != -1)
- iov[niov].iov_len = MIN ((size_t) prec, iov[niov].iov_len);
+ iov[niov].iov_len = strnlen (iov[niov].iov_base, (size_t) prec);
+ else
+ iov[niov].iov_len = strlen (iov[niov].iov_base);
++niov;
break;
@@ -2405,9 +2405,8 @@ process_dl_debug (const char *dl_debug)
{
/* Display a warning and skip everything until next
separator. */
- char *copy = strndupa (dl_debug, len);
_dl_error_printf ("\
-warning: debug option `%s' unknown; try LD_DEBUG=help\n", copy);
+warning: debug option `%.*s' unknown; try LD_DEBUG=help\n", (int)len, dl_debug);
}
dl_debug += len;