A friend of mine was kind enough to run some analysis for me. A couple of
problems jumped out immediately.


    991 static char *make_fullpath(const char *root, const char *key)
...
   1000                 path = malloc(l);
   1001                 strcpy(path, key);
...
   1006                 path = malloc(l);
   1007                 sprintf(path, "%s/%s", root, key);

Those are unchecked malloc(3) calls. How would you prefer to handle
failures?


   1012 int lookup_prune_cache(struct autofs_point *ap, time_t age)
...
   1075                                 cache_unlock(mc);
   1076                                 free(key);
   1077                                 if (next_key)
   1078                                         free(next_key);
   1079                                 free(path);
   1080                                 goto next;
...
   1103 next:
   1104                         cache_readlock(mc);
   1105                         me = cache_lookup_distinct(mc, next_key);
   1106                         free(key);
   1107                         free(path);
   1108                         free(next_key);

Those are double free(3) calls. Oh, and `next_key' is used after being
freed.
_______________________________________________
autofs mailing list
[email protected]
http://linux.kernel.org/mailman/listinfo/autofs

Reply via email to