diff options
author | Choe Hwanjin <choe.hwanjin@gmail.com> | 2021-12-19 16:03:42 +0900 |
---|---|---|
committer | Choe Hwanjin <choe.hwanjin@gmail.com> | 2021-12-31 21:15:38 +0900 |
commit | 313b888f1df00f8e476c3ba25a8ce619baaefc91 (patch) | |
tree | b2b1d4102c20388eac7d29f0e3842d39e4595e07 | |
parent | 4f55605d415bef9d35c105aa6b58b10b4bccffd4 (diff) | |
download | libhangul-313b888f1df00f8e476c3ba25a8ce619baaefc91.tar.gz |
hanja: Fix dereference of NULL
Static Analysis에서 발견된 "dereference of NULL" 문제를 수정한다.
HanjaList 메모리 할당에 실패한 경우에 대한 처리가 되지 않고 있었다.
list 할당에 실패한 경우 Hanja 아이템을 추가하지 않게 한다.
https://github.com/libhangul/libhangul/issues/53
-rw-r--r-- | hangul/hanja.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/hangul/hanja.c b/hangul/hanja.c index 0cc7349..0cbe347 100644 --- a/hangul/hanja.c +++ b/hangul/hanja.c @@ -436,15 +436,19 @@ hanja_table_match(const HanjaTable* table, char* p = strtok_r(buf, ":", &save); res = strcmp(p, key); if (res == 0) { + if (*list == NULL) { + *list = hanja_list_new(key); + } + + if (*list == NULL) { + break; + } + char* value = strtok_r(NULL, ":", &save); char* comment = strtok_r(NULL, "\r\n", &save); Hanja* hanja = hanja_new(p, value, comment); - if (*list == NULL) { - *list = hanja_list_new(key); - } - hanja_list_append_n(*list, hanja, 1); } else if (res > 0) { break; |