libsndfile: update to 1.0.19 (LBSNDF-7)

http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-0186
http://www.mega-nerd.com/libsndfile/libsndfile-1.0.19.tar.gz

This will likely require a fresh boostrap to updated source checkouts.

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@13415 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
Michael Jerris
2009-05-21 21:09:30 +00:00
parent d875d23de5
commit 77fab7603a
252 changed files with 28081 additions and 6032 deletions

View File

@@ -1,5 +1,5 @@
/*
** Copyright (C) 2001-2005 Erik de Castro Lopo <erikd@mega-nerd.com>
** Copyright (C) 2001-2009 Erik de Castro Lopo <erikd@mega-nerd.com>
**
** This program is free software ; you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
@@ -21,6 +21,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <sys/stat.h>
#include <math.h>
@@ -45,9 +46,10 @@
#define BUFFER_LEN (1<<10)
#define LOG_BUFFER_SIZE 1024
static void zero_data_test (const char *filename, int typemajor) ;
static void filesystem_full_test (int typemajor) ;
static void zero_data_test (const char *filename, int format) ;
static void filesystem_full_test (int format) ;
static void permission_test (const char *filename, int typemajor) ;
static void wavex_amb_test (const char *filename) ;
int
main (int argc, char *argv [])
@@ -66,117 +68,139 @@ main (int argc, char *argv [])
do_all=!strcmp (argv [1], "all") ;
if (do_all || ! strcmp (argv [1], "wav"))
{ zero_data_test ("zerolen.wav", SF_FORMAT_WAV) ;
filesystem_full_test (SF_FORMAT_WAV) ;
{ zero_data_test ("zerolen.wav", SF_FORMAT_WAV | SF_FORMAT_PCM_16) ;
filesystem_full_test (SF_FORMAT_WAV | SF_FORMAT_PCM_16) ;
permission_test ("readonly.wav", SF_FORMAT_WAV) ;
wavex_amb_test ("ambisonic.wav") ;
test_count++ ;
} ;
if (do_all || ! strcmp (argv [1], "aiff"))
{ zero_data_test ("zerolen.aiff", SF_FORMAT_AIFF) ;
filesystem_full_test (SF_FORMAT_AIFF) ;
{ zero_data_test ("zerolen.aiff", SF_FORMAT_AIFF | SF_FORMAT_PCM_16) ;
filesystem_full_test (SF_FORMAT_AIFF | SF_FORMAT_PCM_16) ;
permission_test ("readonly.aiff", SF_FORMAT_AIFF) ;
test_count++ ;
} ;
if (do_all || ! strcmp (argv [1], "au"))
{ zero_data_test ("zerolen.au", SF_FORMAT_AU) ;
filesystem_full_test (SF_FORMAT_AU) ;
{ zero_data_test ("zerolen.au", SF_FORMAT_AU | SF_FORMAT_PCM_16) ;
filesystem_full_test (SF_FORMAT_AU | SF_FORMAT_PCM_16) ;
permission_test ("readonly.au", SF_FORMAT_AU) ;
test_count++ ;
} ;
if (do_all || ! strcmp (argv [1], "caf"))
{ zero_data_test ("zerolen.caf", SF_FORMAT_CAF) ;
filesystem_full_test (SF_FORMAT_CAF) ;
{ zero_data_test ("zerolen.caf", SF_FORMAT_CAF | SF_FORMAT_PCM_16) ;
filesystem_full_test (SF_FORMAT_CAF | SF_FORMAT_PCM_16) ;
permission_test ("readonly.caf", SF_FORMAT_CAF) ;
test_count++ ;
} ;
if (do_all || ! strcmp (argv [1], "svx"))
{ zero_data_test ("zerolen.svx", SF_FORMAT_SVX) ;
filesystem_full_test (SF_FORMAT_SVX) ;
{ zero_data_test ("zerolen.svx", SF_FORMAT_SVX | SF_FORMAT_PCM_16) ;
filesystem_full_test (SF_FORMAT_SVX | SF_FORMAT_PCM_16) ;
permission_test ("readonly.svx", SF_FORMAT_SVX) ;
test_count++ ;
} ;
if (do_all || ! strcmp (argv [1], "nist"))
{ zero_data_test ("zerolen.nist", SF_FORMAT_NIST) ;
filesystem_full_test (SF_FORMAT_NIST) ;
{ zero_data_test ("zerolen.nist", SF_FORMAT_NIST | SF_FORMAT_PCM_16) ;
filesystem_full_test (SF_FORMAT_NIST | SF_FORMAT_PCM_16) ;
permission_test ("readonly.nist", SF_FORMAT_NIST) ;
test_count++ ;
} ;
if (do_all || ! strcmp (argv [1], "paf"))
{ zero_data_test ("zerolen.paf", SF_FORMAT_PAF) ;
filesystem_full_test (SF_FORMAT_PAF) ;
{ zero_data_test ("zerolen.paf", SF_FORMAT_PAF | SF_FORMAT_PCM_16) ;
filesystem_full_test (SF_FORMAT_PAF | SF_FORMAT_PCM_16) ;
permission_test ("readonly.paf", SF_FORMAT_PAF) ;
test_count++ ;
} ;
if (do_all || ! strcmp (argv [1], "ircam"))
{ zero_data_test ("zerolen.ircam", SF_FORMAT_IRCAM) ;
filesystem_full_test (SF_FORMAT_IRCAM) ;
{ zero_data_test ("zerolen.ircam", SF_FORMAT_IRCAM | SF_FORMAT_PCM_16) ;
filesystem_full_test (SF_FORMAT_IRCAM | SF_FORMAT_PCM_16) ;
permission_test ("readonly.ircam", SF_FORMAT_IRCAM) ;
test_count++ ;
} ;
if (do_all || ! strcmp (argv [1], "voc"))
{ zero_data_test ("zerolen.voc", SF_FORMAT_VOC) ;
filesystem_full_test (SF_FORMAT_VOC) ;
{ zero_data_test ("zerolen.voc", SF_FORMAT_VOC | SF_FORMAT_PCM_16) ;
filesystem_full_test (SF_FORMAT_VOC | SF_FORMAT_PCM_16) ;
permission_test ("readonly.voc", SF_FORMAT_VOC) ;
test_count++ ;
} ;
if (do_all || ! strcmp (argv [1], "w64"))
{ zero_data_test ("zerolen.w64", SF_FORMAT_W64) ;
filesystem_full_test (SF_FORMAT_W64) ;
{ zero_data_test ("zerolen.w64", SF_FORMAT_W64 | SF_FORMAT_PCM_16) ;
filesystem_full_test (SF_FORMAT_W64 | SF_FORMAT_PCM_16) ;
permission_test ("readonly.w64", SF_FORMAT_W64) ;
test_count++ ;
} ;
if (do_all || ! strcmp (argv [1], "rf64"))
{ zero_data_test ("zerolen.rf64", SF_FORMAT_W64 | SF_FORMAT_PCM_16) ;
filesystem_full_test (SF_FORMAT_W64 | SF_FORMAT_PCM_16) ;
permission_test ("readonly.rf64", SF_FORMAT_W64) ;
test_count++ ;
} ;
if (do_all || ! strcmp (argv [1], "mat4"))
{ zero_data_test ("zerolen.mat4", SF_FORMAT_MAT4) ;
filesystem_full_test (SF_FORMAT_MAT4) ;
{ zero_data_test ("zerolen.mat4", SF_FORMAT_MAT4 | SF_FORMAT_PCM_16) ;
filesystem_full_test (SF_FORMAT_MAT4 | SF_FORMAT_PCM_16) ;
permission_test ("readonly.mat4", SF_FORMAT_MAT4) ;
test_count++ ;
} ;
if (do_all || ! strcmp (argv [1], "mat5"))
{ zero_data_test ("zerolen.mat5", SF_FORMAT_MAT5) ;
filesystem_full_test (SF_FORMAT_MAT5) ;
{ zero_data_test ("zerolen.mat5", SF_FORMAT_MAT5 | SF_FORMAT_PCM_16) ;
filesystem_full_test (SF_FORMAT_MAT5 | SF_FORMAT_PCM_16) ;
permission_test ("readonly.mat5", SF_FORMAT_MAT5) ;
test_count++ ;
} ;
if (do_all || ! strcmp (argv [1], "pvf"))
{ zero_data_test ("zerolen.pvf", SF_FORMAT_PVF) ;
filesystem_full_test (SF_FORMAT_PVF) ;
{ zero_data_test ("zerolen.pvf", SF_FORMAT_PVF | SF_FORMAT_PCM_16) ;
filesystem_full_test (SF_FORMAT_PVF | SF_FORMAT_PCM_16) ;
permission_test ("readonly.pvf", SF_FORMAT_PVF) ;
test_count++ ;
} ;
if (do_all || ! strcmp (argv [1], "htk"))
{ zero_data_test ("zerolen.htk", SF_FORMAT_HTK) ;
filesystem_full_test (SF_FORMAT_HTK) ;
{ zero_data_test ("zerolen.htk", SF_FORMAT_HTK | SF_FORMAT_PCM_16) ;
filesystem_full_test (SF_FORMAT_HTK | SF_FORMAT_PCM_16) ;
permission_test ("readonly.htk", SF_FORMAT_HTK) ;
test_count++ ;
} ;
if (do_all || ! strcmp (argv [1], "avr"))
{ zero_data_test ("zerolen.avr", SF_FORMAT_AVR) ;
filesystem_full_test (SF_FORMAT_AVR) ;
{ zero_data_test ("zerolen.avr", SF_FORMAT_AVR | SF_FORMAT_PCM_16) ;
filesystem_full_test (SF_FORMAT_AVR | SF_FORMAT_PCM_16) ;
permission_test ("readonly.avr", SF_FORMAT_AVR) ;
test_count++ ;
} ;
if (do_all || ! strcmp (argv [1], "sds"))
{ zero_data_test ("zerolen.sds", SF_FORMAT_SDS) ;
filesystem_full_test (SF_FORMAT_SDS) ;
{ zero_data_test ("zerolen.sds", SF_FORMAT_SDS | SF_FORMAT_PCM_16) ;
filesystem_full_test (SF_FORMAT_SDS | SF_FORMAT_PCM_16) ;
permission_test ("readonly.sds", SF_FORMAT_SDS) ;
test_count++ ;
} ;
if (do_all || ! strcmp (argv [1], "mpc2k"))
{ zero_data_test ("zerolen.mpc", SF_FORMAT_MPC2K | SF_FORMAT_PCM_16) ;
filesystem_full_test (SF_FORMAT_MPC2K | SF_FORMAT_PCM_16) ;
permission_test ("readonly.mpc", SF_FORMAT_MPC2K) ;
test_count++ ;
} ;
if (do_all || ! strcmp (argv [1], "ogg"))
{ zero_data_test ("zerolen.oga", SF_FORMAT_OGG | SF_FORMAT_VORBIS) ;
/*-filesystem_full_test (SF_FORMAT_OGG | SF_FORMAT_VORBIS) ;-*/
permission_test ("readonly.oga", SF_FORMAT_OGG) ;
test_count++ ;
} ;
if (test_count == 0)
{ printf ("Mono : ************************************\n") ;
printf ("Mono : * No '%s' test defined.\n", argv [1]) ;
@@ -193,15 +217,24 @@ main (int argc, char *argv [])
*/
static void
zero_data_test (const char *filename, int typemajor)
zero_data_test (const char *filename, int format)
{ SNDFILE *file ;
SF_INFO sfinfo ;
int frames ;
switch (format & SF_FORMAT_TYPEMASK)
{ case SF_FORMAT_OGG :
if (HAVE_EXTERNAL_LIBS == 0)
return ;
break ;
default :
break ;
} ;
print_test_name ("zero_data_test", filename) ;
sfinfo.samplerate = 44100 ;
sfinfo.format = (typemajor | SF_FORMAT_PCM_16) ;
sfinfo.format = format ;
sfinfo.channels = 1 ;
sfinfo.frames = 0 ;
@@ -222,7 +255,7 @@ zero_data_test (const char *filename, int typemajor)
} /* zero_data_test */
static void
filesystem_full_test (int typemajor)
filesystem_full_test (int format)
{ SNDFILE *file ;
SF_INFO sfinfo ;
struct stat buf ;
@@ -235,6 +268,9 @@ filesystem_full_test (int typemajor)
return ;
#endif
/* Make sure errno is zero before doing anything else. */
errno = 0 ;
print_test_name ("filesystem_full_test", filename) ;
if (stat (filename, &buf) != 0)
@@ -248,7 +284,7 @@ filesystem_full_test (int typemajor)
} ;
sfinfo.samplerate = 44100 ;
sfinfo.format = (typemajor | SF_FORMAT_PCM_16) ;
sfinfo.format = format ;
sfinfo.channels = 1 ;
sfinfo.frames = 0 ;
@@ -287,6 +323,9 @@ permission_test (const char *filename, int typemajor)
const char *errorstr ;
int frames ;
/* Make sure errno is zero before doing anything else. */
errno = 0 ;
if (getuid () == 0)
{ /* If running as root bypass this test.
** Root is allowed to open a readonly file for write.
@@ -296,6 +335,11 @@ permission_test (const char *filename, int typemajor)
print_test_name ("permission_test", filename) ;
if (access (filename, F_OK) == 0)
{ chmod (filename, S_IWUSR) ;
unlink (filename) ;
} ;
if ((textfile = fopen (filename, "w")) == NULL)
{ printf ("\n\nLine %d : not able to open text file for write.\n", __LINE__) ;
exit (1) ;
@@ -344,10 +388,37 @@ permission_test (const char *filename, int typemajor)
#endif
} /* permission_test */
/*
** Do not edit or modify anything in this comment block.
** The arch-tag line is a file identity tag for the GNU Arch
** revision control system.
**
** arch-tag: efc6c227-8881-4a1d-8680-0d1255975267
*/
static void
wavex_amb_test (const char *filename)
{ static short buffer [800] ;
SNDFILE *file ;
SF_INFO sfinfo ;
sf_count_t frames ;
print_test_name (__func__, filename) ;
sfinfo.samplerate = 44100 ;
sfinfo.format = SF_FORMAT_WAVEX | SF_FORMAT_PCM_16 ;
sfinfo.channels = 4 ;
frames = ARRAY_LEN (buffer) / sfinfo.channels ;
file = test_open_file_or_die (filename, SFM_WRITE, &sfinfo, SF_TRUE, __LINE__) ;
sf_command (file, SFC_WAVEX_SET_AMBISONIC, NULL, SF_AMBISONIC_B_FORMAT) ;
test_writef_short_or_die (file, 0, buffer, frames, __LINE__) ;
sf_close (file) ;
memset (&sfinfo, 0, sizeof (sfinfo)) ;
file = test_open_file_or_die (filename, SFM_READ, &sfinfo, SF_TRUE, __LINE__) ;
exit_if_true (
sf_command (file, SFC_WAVEX_GET_AMBISONIC, NULL, 0) != SF_AMBISONIC_B_FORMAT,
"\n\nLine %d : Error, this file should be in Ambisonic B format.\n", __LINE__
) ;
sf_close (file) ;
unlink (filename) ;
puts ("ok") ;
} /* wavex_amb_test */