1cdc3a89d5de90b2299c56f4a46c3de590c5184d1Ted Kremenek// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.unix,core.uninitialized -analyzer-store=region -verify %s 2a5ce966d1a23d84aa5e849cf0ed62494e736ea6aZhongxing Xutypedef __typeof(sizeof(int)) size_t; 3a5ce966d1a23d84aa5e849cf0ed62494e736ea6aZhongxing Xuvoid *malloc(size_t); 4a5ce966d1a23d84aa5e849cf0ed62494e736ea6aZhongxing Xuvoid free(void *); 5a5ce966d1a23d84aa5e849cf0ed62494e736ea6aZhongxing Xu 6a5ce966d1a23d84aa5e849cf0ed62494e736ea6aZhongxing Xuchar stackBased1 () { 7a5ce966d1a23d84aa5e849cf0ed62494e736ea6aZhongxing Xu char buf[2]; 8a5ce966d1a23d84aa5e849cf0ed62494e736ea6aZhongxing Xu buf[0] = 'a'; 9a5ce966d1a23d84aa5e849cf0ed62494e736ea6aZhongxing Xu return buf[1]; // expected-warning{{Undefined}} 10a5ce966d1a23d84aa5e849cf0ed62494e736ea6aZhongxing Xu} 11a5ce966d1a23d84aa5e849cf0ed62494e736ea6aZhongxing Xu 12a5ce966d1a23d84aa5e849cf0ed62494e736ea6aZhongxing Xuchar stackBased2 () { 13a5ce966d1a23d84aa5e849cf0ed62494e736ea6aZhongxing Xu char buf[2]; 14a5ce966d1a23d84aa5e849cf0ed62494e736ea6aZhongxing Xu buf[1] = 'a'; 15a5ce966d1a23d84aa5e849cf0ed62494e736ea6aZhongxing Xu return buf[0]; // expected-warning{{Undefined}} 16a5ce966d1a23d84aa5e849cf0ed62494e736ea6aZhongxing Xu} 17a5ce966d1a23d84aa5e849cf0ed62494e736ea6aZhongxing Xu 187a756463ffe90f9a06c8cc8c190f22a5e4366c25Anna Zaks// Exercise the conditional visitor. Radar://10105448 197a756463ffe90f9a06c8cc8c190f22a5e4366c25Anna Zakschar stackBased3 (int *x) { 207a756463ffe90f9a06c8cc8c190f22a5e4366c25Anna Zaks char buf[2]; 217a756463ffe90f9a06c8cc8c190f22a5e4366c25Anna Zaks int *y; 227a756463ffe90f9a06c8cc8c190f22a5e4366c25Anna Zaks buf[0] = 'a'; 237a756463ffe90f9a06c8cc8c190f22a5e4366c25Anna Zaks if (!(y = x)) { 247a756463ffe90f9a06c8cc8c190f22a5e4366c25Anna Zaks return buf[1]; // expected-warning{{Undefined}} 257a756463ffe90f9a06c8cc8c190f22a5e4366c25Anna Zaks } 267a756463ffe90f9a06c8cc8c190f22a5e4366c25Anna Zaks return buf[0]; 277a756463ffe90f9a06c8cc8c190f22a5e4366c25Anna Zaks} 287a756463ffe90f9a06c8cc8c190f22a5e4366c25Anna Zaks 29a5ce966d1a23d84aa5e849cf0ed62494e736ea6aZhongxing Xuchar heapBased1 () { 30a5ce966d1a23d84aa5e849cf0ed62494e736ea6aZhongxing Xu char *buf = malloc(2); 31a5ce966d1a23d84aa5e849cf0ed62494e736ea6aZhongxing Xu buf[0] = 'a'; 32a5ce966d1a23d84aa5e849cf0ed62494e736ea6aZhongxing Xu char result = buf[1]; // expected-warning{{undefined}} 33a5ce966d1a23d84aa5e849cf0ed62494e736ea6aZhongxing Xu free(buf); 34a5ce966d1a23d84aa5e849cf0ed62494e736ea6aZhongxing Xu return result; 35a5ce966d1a23d84aa5e849cf0ed62494e736ea6aZhongxing Xu} 36a5ce966d1a23d84aa5e849cf0ed62494e736ea6aZhongxing Xu 37a5ce966d1a23d84aa5e849cf0ed62494e736ea6aZhongxing Xuchar heapBased2 () { 38a5ce966d1a23d84aa5e849cf0ed62494e736ea6aZhongxing Xu char *buf = malloc(2); 39a5ce966d1a23d84aa5e849cf0ed62494e736ea6aZhongxing Xu buf[1] = 'a'; 40a5ce966d1a23d84aa5e849cf0ed62494e736ea6aZhongxing Xu char result = buf[0]; // expected-warning{{undefined}} 41a5ce966d1a23d84aa5e849cf0ed62494e736ea6aZhongxing Xu free(buf); 42a5ce966d1a23d84aa5e849cf0ed62494e736ea6aZhongxing Xu return result; 43a5ce966d1a23d84aa5e849cf0ed62494e736ea6aZhongxing Xu} 44