More nits/bugs: After looking at malloc for a while we have been looking to see if the use of free/delete is consistent and found the following potential problems: 1. in src/XrdXr/XrdXrClientWorker.cc: At line 304 we have credtype = malloc(4); At line 368 we have delete credtype; instead of free((void *) credtype); 2. In the same file at line 763 there is a delete of redirectHost but it was allocated with malloc at line 921. 3. In src/XrdXrootd/XrdXrootdConfig.cc: There are two errors we detected in this code. The first is a file descriptor leak, and the second is a memory leak. For example, in the method ConfigFn (line 251) we have the return value of a malloc being held by the local variable fbuff. However, if there is an error during the read, they return without ever freeing fbuff. Likewise in several other places. Here is Chris's corrected version of this. I have put a highlight comment on each change. int XrdXrootdProtocol::ConfigFn(char *fn) { struct stat buf; int fd, rsz, NoGo; char *fbuff; if ((fd = open(fn, O_RDONLY)) < 0) {eDest.Emsg("Config", errno, "open", fn); return 1;} if (fstat(fd, &buf) < 0) { eDest.Emsg("Config", errno, "get size of", fn); close(fd); // CDJ fix return 1; } if (!(fbuff = (char *)malloc(buf.st_size+1))) { eDest.Emsg("Config", errno, "get buffer for", fn); close(fd); // CDJ fix return 1; } if ((rsz = read(fd, (void *)fbuff, buf.st_size)) < 0) { eDest.Emsg("Config", errno, "read", fn); close(fd); // CDJ fix free(fbuff); // CDJ fix return 1; } close(fd); fbuff[rsz] = '\0'; NoGo = (rsz ? ConfigIt(fbuff) : 0); free(fbuff); return NoGo; Better than putting free calls everywhere would be a little class whose sole job is to manage a buffer, then all of this would be handled automatically when it went out of scope. Regarding running valgrind, I think that is better done by one of the maintainers. It would take forever to document the errors, and we aren't in a position to fix them directly and send in the changes. -- Gregory J. Sharp email: [log in to unmask] Wilson Synchrotron Laboratory url: http://www.lepp.cornell.edu/~gregor Dryden Rd ph: +1 607 255 4882 Ithaca, NY 14853 fax: +1 607 255 8062