Piotr Caban : msvcrt: Don't overwrite unmatched string in scanf.
Alexandre Julliard
julliard at winehq.org
Thu Jan 16 14:52:27 CST 2014
Module: wine
Branch: master
Commit: 638c8e3847212f1d5399643c30fddcf7afc8c6ee
URL: http://source.winehq.org/git/wine.git/?a=commit;h=638c8e3847212f1d5399643c30fddcf7afc8c6ee
Author: Piotr Caban <piotr at codeweavers.com>
Date: Thu Jan 16 11:39:44 2014 +0100
msvcrt: Don't overwrite unmatched string in scanf.
---
dlls/msvcrt/scanf.h | 4 ++--
dlls/msvcrt/tests/scanf.c | 7 +++++++
2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/dlls/msvcrt/scanf.h b/dlls/msvcrt/scanf.h
index 7f618f4..e85f343 100644
--- a/dlls/msvcrt/scanf.h
+++ b/dlls/msvcrt/scanf.h
@@ -478,7 +478,7 @@ _FUNCTION_ {
if (width>0) width--;
}
/* terminate */
- if (!suppress) *sptr = 0;
+ if (st && !suppress) *sptr = 0;
}
break;
widecharstring: { /* read a word into a wchar_t* */
@@ -508,7 +508,7 @@ _FUNCTION_ {
if (width>0) width--;
}
/* terminate */
- if (!suppress) *sptr = 0;
+ if (st && !suppress) *sptr = 0;
}
break;
/* 'c' and 'C work analogously to 's' and 'S' as described
diff --git a/dlls/msvcrt/tests/scanf.c b/dlls/msvcrt/tests/scanf.c
index b09e7df..97b8074 100644
--- a/dlls/msvcrt/tests/scanf.c
+++ b/dlls/msvcrt/tests/scanf.c
@@ -131,6 +131,13 @@ static void test_sscanf( void )
ok( ret == 1, "Error with format \"%s\"\n","%*[a-cd-dg-e]%c");
ok( buffer[0] == 'h', "Error with \"abcefgdh\" \"%c\"\n", buffer[0]);
+ buffer1[0] = 'b';
+ ret = sscanf("a","%s%s", buffer, buffer1);
+ ok( ret == 1, "expected 1, got %u\n", ret);
+ ok( buffer[0] == 'a', "buffer[0] = '%c'\n", buffer[0]);
+ ok( buffer[1] == '\0', "buffer[1] = '%c'\n", buffer[1]);
+ ok( buffer1[0] == 'b', "buffer1[0] = '%c'\n", buffer1[0]);
+
/* check digits */
ret = sprintf(buffer,"%d:%d:%d",hour,min,sec);
ok( ret == 8, "expected 8, got %u\n", ret);
More information about the wine-cvs
mailing list