test557: fix ubsan runtime error due to int left shift

- Test curl_msnprintf negative int width arg using INT_MIN instead of
  1 << 31 which is undefined behavior.

Closes https://github.com/curl/curl/issues/1516
This commit is contained in:
Jay Satiro 2017-05-29 18:04:53 -04:00
Родитель 35e9281ef8
Коммит 35682764a9
1 изменённых файлов: 6 добавлений и 2 удалений

Просмотреть файл

@ -27,6 +27,10 @@
#include "test.h"
#ifdef HAVE_LIMITS_H
#include <limits.h>
#endif
#ifdef HAVE_LOCALE_H
# include <locale.h> /* for setlocale() */
#endif
@ -1621,8 +1625,8 @@ static int test_float_formatting(void)
123456789123456789123456789.2987654);
errors += strlen_check(buf, 325);
/* 1<<31 turns negative (-2147483648) when used signed */
curl_msnprintf(buf, sizeof(buf), "%*f", (1<<31), 9.1);
/* check negative when used signed */
curl_msnprintf(buf, sizeof(buf), "%*f", INT_MIN, 9.1);
errors += string_check(buf, "9.100000");
/* curl_msnprintf() limits a single float output to 325 bytes maximum