Browse Source

fix return values of asprintf replacement.

wip/ssl-fprint
Oswald Buddenhagen 21 years ago
parent
commit
2e8181a8d8
  1. 16
      src/compat/util.c
  2. 16
      src/util.c

16
src/compat/util.c

@ -65,14 +65,12 @@ vasprintf( char **strp, const char *fmt, va_list ap )
int len; int len;
char tmp[1024]; char tmp[1024];
if ((len = vsnprintf( tmp, sizeof(tmp), fmt, ap) ) < 0) if ((len = vsnprintf( tmp, sizeof(tmp), fmt, ap )) < 0 || !(*strp = malloc( len + 1 )))
*strp = 0; return -1;
else if ((*strp = malloc( len + 1 ))) { if (len >= (int)sizeof(tmp))
if (len >= sizeof(tmp)) vsprintf( *strp, fmt, ap );
vsprintf( *strp, fmt, ap ); else
else memcpy( *strp, tmp, len + 1 );
memcpy( *strp, tmp, len + 1 );
}
return len; return len;
} }
#endif #endif
@ -138,7 +136,7 @@ int
nfvasprintf( char **str, const char *fmt, va_list va ) nfvasprintf( char **str, const char *fmt, va_list va )
{ {
int ret = vasprintf( str, fmt, va ); int ret = vasprintf( str, fmt, va );
if (!*str) if (ret < 0)
oom(); oom();
return ret; return ret;
} }

16
src/util.c

@ -166,14 +166,12 @@ vasprintf( char **strp, const char *fmt, va_list ap )
int len; int len;
char tmp[1024]; char tmp[1024];
if ((len = vsnprintf( tmp, sizeof(tmp), fmt, ap) ) < 0) if ((len = vsnprintf( tmp, sizeof(tmp), fmt, ap )) < 0 || !(*strp = malloc( len + 1 )))
*strp = 0; return -1;
else if ((*strp = malloc( len + 1 ))) { if (len >= (int)sizeof(tmp))
if (len >= sizeof(tmp)) vsprintf( *strp, fmt, ap );
vsprintf( *strp, fmt, ap ); else
else memcpy( *strp, tmp, len + 1 );
memcpy( *strp, tmp, len + 1 );
}
return len; return len;
} }
#endif #endif
@ -249,7 +247,7 @@ int
nfvasprintf( char **str, const char *fmt, va_list va ) nfvasprintf( char **str, const char *fmt, va_list va )
{ {
int ret = vasprintf( str, fmt, va ); int ret = vasprintf( str, fmt, va );
if (!*str) if (ret < 0)
oom(); oom();
return ret; return ret;
} }

Loading…
Cancel
Save