1. 29 Aug, 2008 1 commit
    • Max Kellermann's avatar
      added "length" parameter to validUtf8String() · 43c389b9
      Max Kellermann authored
      At several places, we create temporary copies of non-null-terminated
      strings, just to use them in functions like validUtf8String().  We can
      save this temporary allocation and avoid heap fragmentation if we
      add a length parameter instead of expecting a null-terminated string.
      43c389b9
  2. 05 Feb, 2008 1 commit
  3. 03 Jan, 2008 2 commits
  4. 01 Jan, 2008 1 commit
  5. 28 Dec, 2007 1 commit
    • Eric Wong's avatar
      Merge branches/ew r7104 · b79f6b88
      Eric Wong authored
      thread-safety work in preparation for rewrite to use pthreads
      
      Expect no regressions against trunk (r7078), possibly minor
      performance improvements in update (due to fewer heap
      allocations), but increased stack usage.
      
      Applied the following patches:
      
      * maxpath_str for reentrancy (temporary fix, reverted)
      * path: start working on thread-safe variants of these methods
      * Re-entrancy work on path/character-set conversions
      * directory.c: exploreDirectory() use reentrant functions here
      * directory/update: more use of reentrant functions + cleanups
      * string_toupper: a strdup-less version of strDupToUpper
      * get_song_url: a static-variable-free version of getSongUrl()
      * Use reentrant/thread-safe get_song_url everywhere
      * replace rmp2amp with the reentrant version, rmp2amp_r
      * Get rid of the non-reentrant/non-thread-safe rpp2app, too.
      * buffer2array: assert strdup() returns a usable value in unit tests
      * replace utf8ToFsCharset and fsCharsetToUtf8 with thread-safe variants
      * fix storing playlists w/o absolute paths
      * parent_path(), a reentrant version of parentPath()
      * parentPath => parent_path for reentrancy and thread-safety
      * allow "make test" to automatically run embedded unit tests
      * remove convStrDup() and maxpath_str()
      * use MPD_PATH_MAX everywhere instead of MAXPATHLEN
      * path: get rid of appendSlash, pfx_path and just use pfx_dir
      * get_song_url: fix the ability to play songs in the top-level music_directory
      
      git-svn-id: https://svn.musicpd.org/mpd/trunk@7106 09075e82-0dd4-0310-85a5-a0d7c8717e4f
      b79f6b88
  6. 27 Aug, 2007 1 commit
  7. 26 May, 2007 1 commit
  8. 05 Apr, 2007 1 commit
  9. 18 Feb, 2007 1 commit
  10. 14 Jan, 2007 1 commit
  11. 08 Jan, 2007 3 commits
  12. 14 Oct, 2006 1 commit
  13. 26 Aug, 2006 1 commit
    • Eric Wong's avatar
      Replace strdup and {c,re,m}alloc with x* variants to check for OOM errors · 90847fc8
      Eric Wong authored
      I'm checking for zero-size allocations and assert()-ing them,
      so we can more easily get backtraces and debug problems, but we'll
      also allow -DNDEBUG people to live on the edge if they wish.
      
      We do not rely on errno when checking for OOM errors because
      some implementations of malloc do not set it, and malloc
      is commonly overridden by userspace wrappers.
      
      I've spent some time looking through the source and didn't find any
      obvious places where we would explicitly allocate 0 bytes, so we
      shouldn't trip any of those assertions.
      
      We also avoid allocating zero bytes because C libraries don't
      handle this consistently (some return NULL, some not); and it's
      dangerous either way.
      
      git-svn-id: https://svn.musicpd.org/mpd/trunk@4690 09075e82-0dd4-0310-85a5-a0d7c8717e4f
      90847fc8
  14. 14 Aug, 2006 1 commit
    • Eric Wong's avatar
      Revert leaks from r4311, and also the leak fixes as a result of that · 6459b3ee
      Eric Wong authored
      utf8ToFsCharset() and fsCharsetToUtf8() got very broken in r4311, and
      resulted in several commits to fix those leaks.  Unfortunately, not all
      of those newly introduced leaks were fixed, nor was the result pretty.
      
      Also, fixed a double-free in lsPlaylists().  This is very hard
      to trigger (and therefore exploit) at the moment because we
      check printDirectoryInfo() beforehand.
      
      Intended behavior for utf8ToFsCharset() and fsCharsetToUtf8() as
      God^H^H^Hshank originally intended is now documented in path.h
      to prevent future errors like this.
      
      mpd could still use some good valgrind testing before the 0.12.0
      release.
      
      <plug>In addition to reducing heap fragmentation, malloc
      reductions from mpd-ke greatly reduces the chance of leaks from
      happening due to programming errors.</plug>
      
      git-svn-id: https://svn.musicpd.org/mpd/trunk@4639 09075e82-0dd4-0310-85a5-a0d7c8717e4f
      6459b3ee
  15. 30 Jul, 2006 1 commit
    • Eric Wong's avatar
      remove clumsy strncpy use · 263a9d58
      Eric Wong authored
      strncpy isn't really safe because it doesn't guarantee null termination,
      and we have had to work around it in several places.
      strlcpy (from OpenBSD) isn't great, either because it often leaves
      errors going unchecked (by truncating strings).
      
      So we'll add the pathcpy_trunc() function with is basically strlcpy
      with a hardcoded MAXPATHLEN as the limit, and we'll acknowledge
      truncation since we only work on paths and MAXPATHLEN should be
      set correctly by the system headers[1].
      
      file-specific notes:
      
      inputStream_http:
      eyeballing the changes here, it seems to look alright but I
      haven't actually tested it myself.
      
      ls:
      don't even bother printing a file if the filename is too long
      (and when is it ever?) since we won't be able to read it anyways.
      
      metadataChunk:
      it's only metadata, and it's only for showin the user, so truncating
      it here souldn't be a big issue.
      memset to zero in init is unecessary, so lets not waste cycles
      
      [1] - If the system headers are screwed up, then we're majorly
      screwed regardless of what we do :x
      
      git-svn-id: https://svn.musicpd.org/mpd/trunk@4491 09075e82-0dd4-0310-85a5-a0d7c8717e4f
      263a9d58
  16. 20 Jul, 2006 1 commit
  17. 17 Jul, 2006 1 commit
    • Eric Wong's avatar
      sparse: ANSI-fy function declarations · a234780a
      Eric Wong authored
      These are just warnings from sparse, but it makes the output
      easier to read.  I ran this through a quick perl script, but
      of course verified the output by looking at the diff and making
      sure the thing still compiles.
      
      here's the quick perl script I wrote to generate this patch:
      ----------- 8< -----------
      use Tie::File;
      defined(my $pid = open my $fh, '-|') or die $!;
      if (!$pid) {
      open STDERR, '>&STDOUT' or die $!;
      exec 'sparse', @ARGV or die $!;
      }
      my $na = 'warning: non-ANSI function declaration of function';
      while (<$fh>) {
      print STDERR $_;
      if (/^(.+?\.[ch]):(\d+):(\d+): $na '(\w+)'/o) {
      my ($f, $l, $pos, $func) = ($1, $2, $3, $4);
      $l--;
      tie my @x, 'Tie::File', $f or die "$!: $f";
      print '-', $x[$l], "\n";
      $x[$l] =~ s/\b($func\s*)\(\s*\)/$1(void)/;
      print '+', $x[$l], "\n";
      untie @x;
      }
      }
      
      git-svn-id: https://svn.musicpd.org/mpd/trunk@4378 09075e82-0dd4-0310-85a5-a0d7c8717e4f
      a234780a
  18. 14 Jul, 2006 1 commit
  19. 13 Jul, 2006 3 commits
  20. 28 Mar, 2005 1 commit
  21. 06 Mar, 2005 2 commits
  22. 28 Oct, 2004 1 commit
  23. 20 Jul, 2004 1 commit
  24. 12 Jul, 2004 1 commit
  25. 12 Jun, 2004 1 commit
  26. 11 May, 2004 1 commit
  27. 16 Apr, 2004 1 commit
  28. 15 Apr, 2004 1 commit
  29. 14 Apr, 2004 2 commits
  30. 13 Apr, 2004 3 commits
  31. 21 Mar, 2004 1 commit