on master help sign in
Fix buffer overflow and 64-bit int toStr truncation
commitd73f9bd1fe667f61c8f44048785a1148c59b0af6 authorBenjamin Saunders <besaunde@sfu.ca> dateWed 26 Jun 2013, 12:54 (13 years ago) parentbaf59ac
2 files changed+3−3
llvm/defs.c+1−1 src/IRTS/CodegenLLVM.hs+2−2
llvm/defs.c+1−1
@@ -47,7 +47,7 @@ unsigned long long mpz_get_ull(mpz_t n)
4747
4848char *__idris_strCons(char c, char *s) {
4949 size_t len = strlen(s);
50− char *result = GC_malloc_atomic(len);
50+ char *result = GC_malloc_atomic(len+2);
5151 result[0] = c;
5252 memcpy(result+1, s, len);
5353 result[len+1] = 0;
src/IRTS/CodegenLLVM.hs+2−2
@@ -118,10 +118,10 @@ initDefs tgt =
118118 }
119119 , rtsFun "intStr" ptrI8 [IntegerType 64]
120120 [ BasicBlock (UnName 0)
121− [ UnName 1 := simpleCall "GC_malloc_atomic" [ConstantOperand (C.Int (fromInteger $ tgtWordSize tgt) 12)]
121+ [ UnName 1 := simpleCall "GC_malloc_atomic" [ConstantOperand (C.Int (fromInteger $ tgtWordSize tgt) 21)]
122122 , UnName 2 := simpleCall "snprintf"
123123 [ LocalReference (UnName 1)
124− , ConstantOperand (C.Int (fromInteger $ tgtWordSize tgt) 12)
124+ , ConstantOperand (C.Int (fromInteger $ tgtWordSize tgt) 21)
125125 , ConstantOperand $ C.GetElementPtr True (C.GlobalReference . Name $ "__idris_intFmtStr") [C.Int 32 0, C.Int 32 0]
126126 , LocalReference (UnName 0)
127127 ]