Don't crash if a NULL is passed for a "%s" parameter to SDL_SetError(),
authorRyan C. Gordon <icculus@icculus.org>
Thu, 17 Nov 2005 03:04:47 +0000
changeset 1172 f69f4d25fb20
parent 1171 f84c6f1397cd
child 1173 e9cf8c1b4590
Don't crash if a NULL is passed for a "%s" parameter to SDL_SetError(), instead replace it with the string "(null)", like glibc's printf() would do.
src/SDL_error.c
--- a/src/SDL_error.c	Thu Nov 17 02:35:15 2005 +0000
+++ b/src/SDL_error.c	Thu Nov 17 03:04:47 2005 +0000
@@ -108,8 +108,10 @@
 			    case 's':
 				{
 				  int index = error->argc;
-				  strncpy((char *)error->args[index].buf,
-					va_arg(ap, char *), ERR_MAX_STRLEN);
+				  char *str = va_arg(ap, char *);
+				  if (str == NULL)
+				      str = "(null)";
+				  strncpy((char *)error->args[index].buf, str, ERR_MAX_STRLEN);
 				  error->args[index].buf[ERR_MAX_STRLEN-1] = 0;
 				  error->argc++;
 				}