dwm: use ecalloc, prevent theoretical overflow
e3b7e1d6
1 file(s) · +3 −6
| 630 | 630 | createmon(void) { |
|
| 631 | 631 | Monitor *m; |
|
| 632 | 632 | ||
| 633 | - | if(!(m = (Monitor *)calloc(1, sizeof(Monitor)))) |
|
| 634 | - | die("fatal: could not malloc() %u bytes\n", sizeof(Monitor)); |
|
| 633 | + | m = ecalloc(1, sizeof(Monitor)); |
|
| 635 | 634 | m->tagset[0] = m->tagset[1] = 1; |
|
| 636 | 635 | m->mfact = mfact; |
|
| 637 | 636 | m->nmaster = nmaster; |
|
| 1007 | 1006 | Window trans = None; |
|
| 1008 | 1007 | XWindowChanges wc; |
|
| 1009 | 1008 | ||
| 1010 | - | if(!(c = calloc(1, sizeof(Client)))) |
|
| 1011 | - | die("fatal: could not malloc() %u bytes\n", sizeof(Client)); |
|
| 1009 | + | c = ecalloc(1, sizeof(Client)); |
|
| 1012 | 1010 | c->win = w; |
|
| 1013 | 1011 | updatetitle(c); |
|
| 1014 | 1012 | if(XGetTransientForHint(dpy, w, &trans) && (t = wintoclient(trans))) { |
|
| 1788 | 1786 | ||
| 1789 | 1787 | for(n = 0, m = mons; m; m = m->next, n++); |
|
| 1790 | 1788 | /* only consider unique geometries as separate screens */ |
|
| 1791 | - | if(!(unique = (XineramaScreenInfo *)malloc(sizeof(XineramaScreenInfo) * nn))) |
|
| 1792 | - | die("fatal: could not malloc() %u bytes\n", sizeof(XineramaScreenInfo) * nn); |
|
| 1789 | + | unique = ecalloc(nn, sizeof(XineramaScreenInfo)); |
|
| 1793 | 1790 | for(i = 0, j = 0; i < nn; i++) |
|
| 1794 | 1791 | if(isuniquegeom(unique, j, &info[i])) |
|
| 1795 | 1792 | memcpy(&unique[j++], &info[i], sizeof(XineramaScreenInfo)); |
|