summaryrefslogtreecommitdiff
path: root/src/input/input_file.c
AgeCommit message (Collapse)Author
2009-11-30Trim trailing space & reduce space+tab.Darren Salt
2009-02-10Fix broken size checks in various input plugins (ref. CVE-2008-5239).Darren Salt
2009-01-04Fix for CVE-2008-5239Matthias Hopf
xine-lib 1.1.12, and other 1.1.15 and earlier versions, does not properly handle (a) negative and (b) zero values during unspecified read function calls in input_file.c, input_net.c, input_smb.c, and input_http.c, which allows remote attackers to cause a denial of service (crash) or possibly execute arbitrary code via vectors such as (1) a file or (2) an HTTP response, which triggers consequences such as out-of-bounds reads and heap-based buffer overflows.
2008-05-07Use strn?dup instead of alloc + strn?cpy.Diego 'Flameeyes' Pettenò
Whenever an allocated memory area is immediately filled in with a string through strcpy() or strncpy(), replace the calls with the appropriate strn?dup().
2008-05-07Use asprintf() rather than malloc() + sprintf().Diego 'Flameeyes' Pettenò
Using asprintf() instead of malloc() + sprintf() reduces the lines of code in xine-lib (moving the allocation to the C library or asprintf replacement), makes it safer to access the string and can also improve performance whenever the value returned by a function was used as parameter, as before it had to run the function twice in almost every case (once for strlen(), once for sprintf()).
2008-05-07xine_xmalloc() deprecation: replace its use with static and non-zero size.Diego 'Flameeyes' Pettenò
The xine_xmalloc() function is going to be deprecated, as its behaviour is rarely needed as such, and it's thus misused. With this, almost all uses of xine_xmalloc() with static size (for instance the value returned by sizeof()) or with a size that is guaranteed not to be zero (like strlen()+1) are replaced with calls to either calloc(1, ...) or malloc(). malloc() is used whenever the allocated memory is going to be immediately overwritten, while calloc() is used in every other case, as it sets the whole memory area to zero. --HG-- extra : transplant_source : %8F%98%EC%02%1E%83%F0s%06X%83C%205Y%80%B12%CC%E1
2008-04-19Replace xine_xcalloc usage with calloc, for the revisions transplanted from ↵Diego 'Flameeyes' Pettenò
1.2 series.
2007-04-14Use xine_xcalloc instead of xine_xmalloc when mutiplying the number of ↵Diego 'Flameeyes' Pettenò
elements by the size of the single element. (transplanted from 512894f517c423fed0cadeca0d46c6d909403106) --HG-- extra : transplant_source : Q%28%94%F5%17%C4%23%FE%D0%CA%DE%CA%0DF%C6%D9%09%401%06
2007-12-18Don't treat # in MRLs as literals or URI-decode raw filenames. [Bug 1784272]Darren Salt
2007-11-10Delete most of the CVS $Id$/$Log$ lines.Darren Salt
--HG-- extra : transplant_source : %E0%D0%C5%8B%BEU%DD%24%5D7%1F%ADV%AD%EB%23%CBU%80%EB
2007-11-09Update FSF address on non-contributed code and COPYING files.Diego 'Flameeyes' Pettenò
For contributed code, leave whatever the version we last synced for is using to make simpler future syncs.
2007-07-08Have the file input plugin use _x_mrl_unescape() instead of its own code.Darren Salt
2007-06-03Add a comment & changelog entry for the mmap bug fix.Darren Salt
2007-06-03[patch] Nasty mmap problem with huge filesAndrew de Quincey
Hi, I've been tracking down a very odd bug this afternoon. As it turns out it is caused by enabling xine's mmap() support for the input_file.c. I'm running 32 bit linux 2.6.21. The file in question is 0x10e4da000 bytes long (you can probably guess what kind of bug this is by now :) Anyway, the issue stems from the definition of mmap(): void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset); compare this to the definition of st_size in struct stat: off_t st_size; /* total size, in bytes */ On my machine (in input_file.c) sizeof(size_t) ==4, whilst sizeof(off_t) == 8. However the compiler doesn't generate a warning when the following is done in xine's code: if ( (this->mmap_base = mmap(NULL, sbuf.st_size, PROT_READ, MAP_SHARED, this->fh, 0)) != (void*)-1 So it silently truncates the upper part of the length. Obviously you cannot mmap() a file that large into (32 bit) memory anyway, but as it turns out, mmapping() 0xe4da000 succeeds, which causes... problems. The patch (against xine-lib 1.1.6) does two things: * Check that the length will not be truncated, while still allowing for mmap()s of large files under 64 bit OSes. * A correctness fix: if mmap() fails, this->mmap_base will be set to 0xffffffff. Later on when the file is closed, this means it was attempting to do munmap(0xffffffff).
2007-03-29Reorder fields to fill hole.Diego 'Flameeyes' Pettenò
CVS patchset: 8774 CVS date: 2007/03/29 19:45:33
2007-02-25Remove unused code.Diego 'Flameeyes' Pettenò
CVS patchset: 8627 CVS date: 2007/02/25 18:04:08
2007-01-19Make get_mrl return a const char * too.Diego 'Flameeyes' Pettenò
CVS patchset: 8524 CVS date: 2007/01/19 01:05:24
2007-01-18Make get_description function return a const char * rather than just a char ↵Diego 'Flameeyes' Pettenò
*, so that 'return "something"' is valid. Note that _()/gettext() returns a char * but statically allocated, that the documentation considers constant. CVS patchset: 8519 CVS date: 2007/01/18 23:02:18
2006-12-19Mark string-type configuration items according to whether they're plainDarren Salt
strings or names of files, device nodes or directories. This information is available to front ends (via .num_value) so that they can present file/dir-open dialogue boxes if they so choose. Subtitle font selection is split up due to this. CVS patchset: 8425 CVS date: 2006/12/19 19:10:50
2006-10-01When the mmap()ed file grows, disable mmap() support.Diego 'Flameeyes' Pettenò
CVS patchset: 8326 CVS date: 2006/10/01 20:14:43
2006-09-16Fixed comment.Thibaut Mattern
CVS patchset: 8266 CVS date: 2006/09/16 14:38:18
2006-09-16Should fix some random crashes (see testsuite).Thibaut Mattern
CVS patchset: 8265 CVS date: 2006/09/16 14:35:44
2006-09-13Return -1 when the file is inaccessible, not found, or empty, so that other ↵Diego 'Flameeyes' Pettenò
input plugins are not tried and the proper error message is returned. Bug #1550763. CVS patchset: 8232 CVS date: 2006/09/13 23:22:51
2006-09-10Fix seeking, remove blocksize support for now, and check if mmap fails.Diego 'Flameeyes' Pettenò
CVS patchset: 8215 CVS date: 2006/09/10 01:46:45
2006-09-10Add missing line.Diego 'Flameeyes' Pettenò
CVS patchset: 8214 CVS date: 2006/09/10 00:59:37
2006-09-09Implement MMAP capable reading for files, reduces memory impact and improve ↵Diego 'Flameeyes' Pettenò
performance on local files. CVS patchset: 8213 CVS date: 2006/09/09 22:11:08
2006-07-10Implement visibility support, available on GCC 4.0 and later and on some 3.4 ↵Diego 'Flameeyes' Pettenò
(through backports), to avoid exporting unneeded internal symbols, making plugins' loading faster and use of internal copies of libraries more solid. It should automatically fall back to the old way in GCCs that does not support -fvisibility=hidden, but has to be tested carefully. No issues were found in the months of testing in Gentoo, but this requires special attention anyway. CVS patchset: 8101 CVS date: 2006/07/10 22:08:12
2006-05-03Make various arrays and structures (mainly xine_plugin_info) const.Darren Salt
(Diego Pettenò) CVS patchset: 7985 CVS date: 2006/05/03 19:46:06
2006-03-17- implement change advised by Darren:Bastien Nocera
http://article.gmane.org/gmane.comp.video.xine.devel/15139 CVS patchset: 7934 CVS date: 2006/03/17 18:21:23
2006-03-16[coverity]Thibaut Mattern
CID: 176 Checker: RESOURCE_LEAK (help) File: xine-lib/src/input/input_file.c Function: file_class_get_dir Description: Returned without freeing storage "hide_files" CID: 176 Checker: RESOURCE_LEAK (help) File: xine-lib/src/input/input_file.c Function: file_class_get_dir Description: Returned without freeing storage "dir_files" CID: 176 Checker: RESOURCE_LEAK (help) File: xine-lib/src/input/input_file.c Function: file_class_get_dir Description: Returned without freeing storage "norm_files" CVS patchset: 7932 CVS date: 2006/03/16 22:17:16
2006-03-16- Also ignore the zero file size for character device nodes, patch fromBastien Nocera
Bill Fink <billfink@mindspring.com> CVS patchset: 7927 CVS date: 2006/03/16 10:52:32
2005-10-14input plugin time seeking patch.Miguel Freitas
hopefuly somebody will be able to help fixing the mess i did in dvdnav ;) CVS patchset: 7759 CVS date: 2005/10/14 21:02:16
2005-09-02Unregister config callbacks.Thibaut Mattern
CVS patchset: 7716 CVS date: 2005/09/02 22:39:42
2005-08-25*BUGFIX*František Dvořák
Windows ports fixes and improvements due to my current work on toxine: - first experiments with external win32 pthreads, more portable code (pthread_t may be a struct) - headers refactored - moved dirent win32 replacement to lib/, hide it for frontends, used system version, if found, not used non-POSIX dirent->d_reclen (this item doesn't work in MinGW), fix memleak in dvb - separated settings for postproc and avcodec when using external ffmpeg - check for malloc.h in public xine.m4, used it conditionally in xine headers - replaced random() by POSIX more common rand() - prevent one segfault in directx vo plugin, if fails - M$VC port update CVS patchset: 7709 CVS date: 2005/08/25 15:36:29
2005-06-21- Patch from Christophe Thommeret <hftom@free.fr> to avoid checkingBastien Nocera
for the size of a FIFO Fix a file descriptor leak when the length of a file is zero CVS patchset: 7632 CVS date: 2005/06/21 09:59:49
2005-05-29- Send the XINE_MSG_FILE_EMPTY UI message when trying to play an emptyBastien Nocera
(zero-sized) file CVS patchset: 7591 CVS date: 2005/05/29 12:29:41
2005-02-07Added PLUGIN_MUST_PRELOAD to all input plugins registering config entries.Thibaut Mattern
Added PLUGIN_NO_UNLOAD to the gnome_vfs plugin because unloading this plugins cause troubles (segfault). Current plugin loader preloads all input and demuxer plugins, so adding these flags will not change the current behavior of the lib. CVS patchset: 7390 CVS date: 2005/02/07 23:58:57
2005-02-06Added a plugin_node_t pointer to the input plugin struct.Thibaut Mattern
Incremented all input plugins API version. CVS patchset: 7384 CVS date: 2005/02/06 15:00:34
2004-12-20remove all local names beginning with double underscore, because C99Michael Roitzsch
reserves these names for use by the C implementation CVS patchset: 7288 CVS date: 2004/12/20 21:22:18
2004-12-12huge patch ahead: reorganizing config entries with automatic conversionMichael Roitzsch
and backwards compatible translation Sorry, I got a litte tired proof-reading the patch, so their might be bugs lurking around. I will give it some further examination and (as necessary) fixing tomorrow. CVS patchset: 7233 CVS date: 2004/12/12 22:00:47
2004-09-02Warnings on WIN32.František Dvořák
Compilation fix for CygWin. CVS patchset: 6932 CVS date: 2004/09/02 19:56:40
2004-07-25protect some buffers to be on the safe side (some of them might be hardMichael Roitzsch
to overflow, but it could be possible) input_cdda contains the copy&paste bug of filling the buffer to its end and then appending yet another character CVS patchset: 6848 CVS date: 2004/07/25 17:11:59
2004-07-20Add const to get_identifier return type since that's n fact what itRocky Bernstein
is. Should protect against a plugin returning a malloc'd variable for example. CVS patchset: 6821 CVS date: 2004/07/20 00:50:10
2004-06-22File input module now groks file://localhost/... and file://127.0.0.1/... MRLsAndre Pang
CVS patchset: 6731 CVS date: 2004/06/22 14:31:40
2004-06-13implement steps 1, 2, 3 and 4 of the seeking proposal:Miguel Freitas
http://article.gmane.org/gmane.comp.video.xine.devel/9532 it is now up to demuxers to decide what the 0..65535 position means. demuxers tested: ogg, voc, flac, rm, asf, vqa, vob, avi, y4m, au, mov, ts, mp3, mpg, wav, ra, mve CVS patchset: 6686 CVS date: 2004/06/13 21:28:52
2004-04-15- generate events for "Permission denied" and "File not found" in the http ↵Bastien Nocera
and file plugins CVS patchset: 6404 CVS date: 2004/04/15 00:14:56
2004-04-10improving config help stringsMichael Roitzsch
CVS patchset: 6383 CVS date: 2004/04/10 15:45:10
2003-12-14API version bounceSiggi Langauf
CVS patchset: 5912 CVS date: 2003/12/14 22:13:22
2003-12-05cleanup phase II. use xprintf when it's relevant, use xine_xmalloc when it's ↵Daniel Caujolle-Bert
relevant too. Small other little fix (can't remember). Change few internal function prototype because it xine_t pointer need to be used if some xine's internal sections. NOTE: libdvd{nav,read} is still too noisy, i will take a look to made it quit, without invasive changes. To be continued... CVS patchset: 5844 CVS date: 2003/12/05 15:54:56
2003-11-26lprintf cleanup, pass I.Daniel Caujolle-Bert
CVS patchset: 5796 CVS date: 2003/11/26 19:43:26