From 4db05b90acffa66909ef1dd7de84f60b534d0678 Mon Sep 17 00:00:00 2001 From: suzukiplan Date: Thu, 11 Feb 2016 10:16:41 +0900 Subject: [PATCH 1/3] link error if using both of vgsdec.c and vgsmml.c --- CHANGES.md | 3 +++ makefile | 4 ++-- vgs-bgm-decoder | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index b69f91c..527769a 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,8 @@ # Changes +## Version 1.02 +- bugfix: https://github.com/suzukiplan/vgs-mml-compiler/issues/3 + ## Version 1.01 - fixed compiler in UNIX: https://github.com/suzukiplan/vgs-mml-compiler/issues/1 diff --git a/makefile b/makefile index 2e169a6..c687010 100644 --- a/makefile +++ b/makefile @@ -2,8 +2,8 @@ CC=/usr/bin/gcc all: vgs2mml -vgs2mml: src/vgsmml.c src/vgsmml.h src/cli.c vgs-bgm-decoder/src/vgsdec_internal.h - $(CC) -o vgs2mml -I./src -I./vgs-bgm-decoder/src src/vgsmml.c src/cli.c +vgs2mml: src/vgsmml.c src/vgsmml.h src/cli.c vgs-bgm-decoder/src/miniz.c vgs-bgm-decoder/src/vgsdec_internal.h + $(CC) -o vgs2mml -I./src -I./vgs-bgm-decoder/src src/vgsmml.c src/cli.c vgs-bgm-decoder/src/miniz.c test: all test "`./vgs2mml ./test/test-error-undefined-macro.mml test.bgm`" = "error(101) line=52: undeclared variable was specified" diff --git a/vgs-bgm-decoder b/vgs-bgm-decoder index d6a5f7a..52f6537 160000 --- a/vgs-bgm-decoder +++ b/vgs-bgm-decoder @@ -1 +1 @@ -Subproject commit d6a5f7aa4bc4751cc20b0a60e9f2a025281ddfae +Subproject commit 52f65378a851fe9b7f507f9eb8e0082aacaac7cc From 5ebc96a02db52c4ce0c95273324d2aa68840c5c9 Mon Sep 17 00:00:00 2001 From: suzukiplan Date: Thu, 11 Feb 2016 11:37:07 +0900 Subject: [PATCH 2/3] adding '\0' terminated check --- .gitignore | 1 + makefile | 3 ++- src/vgsmml.c | 7 +++++++ test/test_memchk.c | 17 +++++++++++++++++ 4 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 test/test_memchk.c diff --git a/.gitignore b/.gitignore index c3bf9d6..62ead81 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ vgs2mml *.dSYM test.bgm +test_memchk diff --git a/makefile b/makefile index c687010..ba6ef47 100644 --- a/makefile +++ b/makefile @@ -8,5 +8,6 @@ vgs2mml: src/vgsmml.c src/vgsmml.h src/cli.c vgs-bgm-decoder/src/miniz.c vgs-bgm test: all test "`./vgs2mml ./test/test-error-undefined-macro.mml test.bgm`" = "error(101) line=52: undeclared variable was specified" ./vgs2mml ./test/test-normal.mml test.bgm - vgs2play test.bgm + $(CC) -o test_memchk -I./src -I./vgs-bgm-decoder/src src/vgsmml.c test/test_memchk.c vgs-bgm-decoder/src/miniz.c + valgrind --tool=memcheck ./test_memchk diff --git a/src/vgsmml.c b/src/vgsmml.c index b8f26dc..3b98177 100644 --- a/src/vgsmml.c +++ b/src/vgsmml.c @@ -161,6 +161,13 @@ struct VgsBgmData* __stdcall vgsmml_compile_from_memory(void* data, size_t size, return NULL; } + /* memory check */ + if ('\0' != ((char*)data)[size - 1]) { + strcpy(err->message, "need specify the \'\\0\' terminated string to the data argument."); + err->code = VGSMML_ERR_INVALID; + return NULL; + } + /* count line */ for (nLine = 1, i = 0; buf[i]; i++) { if ('\n' == buf[i]) nLine++; diff --git a/test/test_memchk.c b/test/test_memchk.c new file mode 100644 index 0000000..65a8769 --- /dev/null +++ b/test/test_memchk.c @@ -0,0 +1,17 @@ +#include +#include +#include "vgsmml.h" + +int main(int argc, char* argv[]) +{ + struct VgsMmlErrorInfo err; + char foo[4]; + strcpy(foo, "foo"); + if (NULL == vgsmml_compile_from_memory(foo, 3, &err) && VGSMML_ERR_INVALID == err.code) { + puts(err.message); + puts("test succeed"); + return 0; + } + puts("test failed"); + return -1; +} From d77076637c51248f25b1b4d85b6c472c19a51d52 Mon Sep 17 00:00:00 2001 From: suzukiplan Date: Thu, 11 Feb 2016 11:39:55 +0900 Subject: [PATCH 3/3] updated CHANGES.md --- CHANGES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.md b/CHANGES.md index 527769a..dd3be63 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,6 +1,7 @@ # Changes ## Version 1.02 +- added '\0' terminated check - bugfix: https://github.com/suzukiplan/vgs-mml-compiler/issues/3 ## Version 1.01