Mercurial > libdvdread4.hg
annotate dvdread_internal.h @ 48:d71db8e4e1c7 src
add bounds checking in UDFFileEntry
Some badly mastered DVDs can have set bogus lengths of the Allocation
Descriptors, causing a segfault. This check ensures that the total entry
length does not exceed DVD logical block size before processing the entry.
| author | henry |
|---|---|
| date | Thu, 04 Mar 2010 19:14:17 +0000 |
| parents | ef679522d00f |
| children | 3bc841283972 |
| rev | line source |
|---|---|
| 25 | 1 /* |
| 2 * This file is part of libdvdread. | |
| 3 * | |
| 4 * libdvdread is free software; you can redistribute it and/or modify | |
| 5 * it under the terms of the GNU General Public License as published by | |
| 6 * the Free Software Foundation; either version 2 of the License, or | |
| 7 * (at your option) any later version. | |
| 8 * | |
| 9 * libdvdread is distributed in the hope that it will be useful, | |
| 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 12 * GNU General Public License for more details. | |
| 13 * | |
| 14 * You should have received a copy of the GNU General Public License along | |
| 15 * with libdvdread; if not, write to the Free Software Foundation, Inc., | |
| 16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | |
| 17 */ | |
| 18 | |
| 23 | 19 #ifndef LIBDVDREAD_DVDREAD_INTERNAL_H |
| 20 #define LIBDVDREAD_DVDREAD_INTERNAL_H | |
| 3 | 21 |
|
41
ef679522d00f
replaced conditional checks on MSC with _WIN32 to permit MINGW to mount and decrypt images; patch by John Stebbins (stebbing jetheaddev com)
nicodvb
parents:
27
diff
changeset
|
22 #ifdef _WIN32 |
| 3 | 23 #include <unistd.h> |
|
41
ef679522d00f
replaced conditional checks on MSC with _WIN32 to permit MINGW to mount and decrypt images; patch by John Stebbins (stebbing jetheaddev com)
nicodvb
parents:
27
diff
changeset
|
24 #endif /* _WIN32 */ |
| 3 | 25 |
|
27
98951f8ec89c
cosmetics: Sync indentation and similar changes from libdvdread 0.9.5.
diego
parents:
25
diff
changeset
|
26 #define CHECK_VALUE(arg) \ |
|
98951f8ec89c
cosmetics: Sync indentation and similar changes from libdvdread 0.9.5.
diego
parents:
25
diff
changeset
|
27 if(!(arg)) { \ |
|
98951f8ec89c
cosmetics: Sync indentation and similar changes from libdvdread 0.9.5.
diego
parents:
25
diff
changeset
|
28 fprintf(stderr, "\n*** libdvdread: CHECK_VALUE failed in %s:%i ***" \ |
|
98951f8ec89c
cosmetics: Sync indentation and similar changes from libdvdread 0.9.5.
diego
parents:
25
diff
changeset
|
29 "\n*** for %s ***\n\n", \ |
|
98951f8ec89c
cosmetics: Sync indentation and similar changes from libdvdread 0.9.5.
diego
parents:
25
diff
changeset
|
30 __FILE__, __LINE__, # arg ); \ |
|
98951f8ec89c
cosmetics: Sync indentation and similar changes from libdvdread 0.9.5.
diego
parents:
25
diff
changeset
|
31 } |
| 3 | 32 |
| 23 | 33 #endif /* LIBDVDREAD_DVDREAD_INTERNAL_H */ |
