HanjaList와 PtrVector의 크기의 한계값을 SIZE_MAX를 사용하여 체크
authorChoe Hwanjin <choe.hwanjin@gmail.com>
Sun, 24 Feb 2008 02:02:39 +0000 (11:02 +0900)
committerChoe Hwanjin <choe.hwanjin@gmail.com>
Sun, 24 Feb 2008 02:02:39 +0000 (11:02 +0900)
git-svn-id: http://kldp.net/svn/hangul/libhangul/trunk@164 8f00fcd2-89fc-0310-932e-b01be5b65e01

hangul/hanja.c

index 2db6c65..f6dfea0 100644 (file)
@@ -333,7 +333,10 @@ ptr_vector_get_length(PtrVector* vector)
 static void
 ptr_vector_append(PtrVector* vector, void* data)
 {
-    if (vector->alloc < vector->len + 1 && vector->alloc < UINT_MAX / 2) {
+    if (vector->alloc * sizeof(vector->ptrs[0]) >= SIZE_MAX / 2)
+       return;
+
+    if (vector->alloc < vector->len + 1) {
        size_t alloc = vector->alloc * 2;
        void** ptrs;
 
@@ -457,7 +460,10 @@ hanja_list_new(const char *key)
 static void
 hanja_list_reserve(HanjaList* list, size_t n)
 {
-    if (list->alloc < list->len + n && list->alloc < UINT_MAX / 2) {
+    if (list->alloc * sizeof(list->items[0]) >= SIZE_MAX / 2)
+       return;
+
+    if (list->alloc < list->len + n) {
        const Hanja** data;
        size_t size = list->alloc;