title: Invalid read of size 1 when using valgrind
body: <p>I am getting this output when using valgrind:</p>
  
  <pre><code>==19923== Invalid read of size 1
  ==19923==    at 0x52CCCC0: vfprintf (vfprintf.c:1632)
  ==19923==    by 0x52F4772: vasprintf (vasprintf.c:59)
  ==19923==    by 0x52D3A56: asprintf (asprintf.c:35)
  ==19923==    by 0x400D77: addToList (pa1.c:124)
  ==19923==    by 0x4010AF: md5Hash (pa1.c:220)
  ==19923==    by 0x401138: newFile (pa1.c:244)
  ==19923==    by 0x401260: searchDirects (pa1.c:280)
  ==19923==    by 0x401451: main (pa1.c:339)
  ==19923==  Address 0x585b720 is 0 bytes inside a block of size 27 free'd
  ==19923==    at 0x4C2EDEB: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
  ==19923==    by 0x401144: newFile (pa1.c:246)
  ==19923==    by 0x401260: searchDirects (pa1.c:280)
  ==19923==    by 0x401382: directoryCheck (pa1.c:312)
  ==19923==    by 0x4012CD: searchDirects (pa1.c:290)
  ==19923==    by 0x401451: main (pa1.c:339)
  ==19923==  Block was alloc'd at
  ==19923==    at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
  ==19923==    by 0x52F47D7: vasprintf (vasprintf.c:73)
  ==19923==    by 0x52D3A56: asprintf (asprintf.c:35)
  ==19923==    by 0x40112C: newFile (pa1.c:239)
  ==19923==    by 0x401260: searchDirects (pa1.c:280)
  ==19923==    by 0x401382: directoryCheck (pa1.c:312)
  ==19923==    by 0x4012CD: searchDirects (pa1.c:290)
  ==19923==    by 0x401451: main (pa1.c:339)
  </code></pre>
  
  <p>Here is where I have narrowed it down to being the problem in my code:</p>
  
  <pre><code>else
  {    
      currentList = headList;
      printf("This is where I will put the code to create the Linked list!\n");
      if(currentList != 0)
      {
          while(currentList-&gt;nextList != 0)
          {
              if(currentList-&gt;key = key)
              {
                  asprintf(&amp;buff, "%s %s", currentList-&gt;value, dirValue); // PROBLEM IS HERE
                  printf("Here is the new string that holds the directory paths: %s\n", buff);
                  currentList-&gt;value = buff;
                  free(buff);
                  printf("Here is the new string that holds the directory paths: %s\n", currentList-&gt;value);
                  return;
              }
              currentList = currentList-&gt;nextList;
          }
  
          currentList-&gt;nextList = malloc(sizeof(struct List));
          printf("Adding a new node\n");
          //Reached the end of the Linked list and didn't find the
          //same key so create a new node.
          currentList = currentList-&gt;nextList;
          currentList-&gt;key = key;
          currentList-&gt;nextList = NULL;
          currentList-&gt;value = dirValue;
      }
  }
  </code></pre>
  
  <p>I have many errors, and providing the entire valgrind output would be overkill I feel. All of the errors I am getting come back to where I am using asprintf() <code>("addToList (pa1.c:124)" line in the report)</code>. Above the code I initialize <code>char *buff = NULL;</code>, and <code>currentList-&gt;value</code> holds a string that I am wanting to append onto using asprintf. Any guesses to why I am getting the numerous Invalid read size 1 errors would be greatly appreciated. Also, the string is appended as expected when I do print out the result from asprintf() Thanks.  </p>