Author: chandlerc Date: Mon Aug 3 22:53:04 2015 New Revision: 243950 URL: http://llvm.org/viewvc/llvm-project?rev=243950&view=rev Log: [UB] Avoid a really broken call to realloc that would later result in a bad call to memcpy.
When we only have a buffer from one of the two reparse calls, we can just return that buffer rather than going through the realloc/memcpy dance. Found with UBsan. Modified: cfe/trunk/tools/c-index-test/c-index-test.c Modified: cfe/trunk/tools/c-index-test/c-index-test.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/c-index-test/c-index-test.c?rev=243950&r1=243949&r2=243950&view=diff ============================================================================== --- cfe/trunk/tools/c-index-test/c-index-test.c (original) +++ cfe/trunk/tools/c-index-test/c-index-test.c Mon Aug 3 22:53:04 2015 @@ -255,6 +255,17 @@ static int parse_remapped_files_with_try if (ret) return ret; + if (num_unsaved_files_no_try_idx == 0) { + *unsaved_files = unsaved_files_try_idx; + *num_unsaved_files = num_unsaved_files_try_idx; + return 0; + } + if (num_unsaved_files_try_idx == 0) { + *unsaved_files = unsaved_files_no_try_idx; + *num_unsaved_files = num_unsaved_files_no_try_idx; + return 0; + } + *num_unsaved_files = num_unsaved_files_no_try_idx + num_unsaved_files_try_idx; *unsaved_files = (struct CXUnsavedFile *)realloc(unsaved_files_no_try_idx, _______________________________________________ cfe-commits mailing list cfe-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits