suckless-tools

Home of dwm, dmenu and other quality software with a focus on simplicity, clarity, and frugality.
Home page: http://suckless.org


Log

  • Started: 2012-01-31
  • Discussed: 2012-01-31
  • Draft Submitted: 2012-02-01
  • Submitted: 2012-02-02, Bug#658386
  • Accepted: 2012-11-15, by Vasudev Kamath

ToDo

Here is the output of grep -R PATH_MAX suckless-tools-38/*:

dmenu/dmenu_path.c: char buf[PATH_MAX];

Comments

Here are comments on the patch...

 void
 scan(void) {
-   char buf[PATH_MAX];
+   char *buf = NULL;
+   char *new_buf = NULL;
+   size_t buf_size = 0;

In this function we turn buf into dynamically allocated string.

        while((ent = readdir(dp))) {
+           buf_size = strlen(dir)+strlen(ent->d_name)+2;
+           if(!buf || strlen(buf) < buf_size) {
+               new_buf = realloc(buf, buf_size);
+               if(!new_buf)
+                   die("realloc failed");
+               buf = new_buf;
+           }

For each directory entry we create or adapt the buffer size.

        }
+       free(buf);

We free the buf when done.