annotate libdvdread/dvd_input.h @ 28115:1a9b1b7e285f

Add extra checks to avoid crashes with broken vqf files. Fixes CVE-2008-5616
author reimar
date Sun, 14 Dec 2008 15:17:18 +0000
parents ea01824701a5
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
27466
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
1 /* -*- c-basic-offset: 2; indent-tabs-mode: nil -*- */
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
2 #ifndef DVD_INPUT_H_INCLUDED
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
3 #define DVD_INPUT_H_INCLUDED
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
4
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
5 /*
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
6 * Copyright (C) 2001, 2002 Samuel Hocevar <sam@zoy.org>,
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
7 * Håkan Hjort <d95hjort@dtek.chalmers.se>
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
8 *
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
9 * This program is free software; you can redistribute it and/or modify
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
10 * it under the terms of the GNU General Public License as published by
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
11 * the Free Software Foundation; either version 2 of the License, or
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
12 * (at your option) any later version.
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
13 *
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
14 * This program is distributed in the hope that it will be useful,
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
17 * GNU General Public License for more details.
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
18 *
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
19 * You should have received a copy of the GNU General Public License
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
20 * along with this program; if not, write to the Free Software
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
21 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
22 */
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
23
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
24 /**
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
25 * Defines and flags. Make sure they fit the libdvdcss API!
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
26 */
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
27 #define DVDINPUT_NOFLAGS 0
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
28
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
29 #define DVDINPUT_READ_DECRYPT (1 << 0)
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
30
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
31 typedef struct dvd_input_s *dvd_input_t;
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
32
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
33 /**
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
34 * Pointers which will be filled either the input methods functions.
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
35 */
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
36 extern dvd_input_t (*dvdinput_open) (const char *);
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
37 extern int (*dvdinput_close) (dvd_input_t);
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
38 extern int (*dvdinput_seek) (dvd_input_t, int);
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
39 extern int (*dvdinput_title) (dvd_input_t, int);
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
40 extern int (*dvdinput_read) (dvd_input_t, void *, int, int);
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
41 extern char * (*dvdinput_error) (dvd_input_t);
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
42
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
43 /**
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
44 * Free any objects allocated by dvdinput_setup.
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
45 * Should only be called when libdvdread is not to be used any more.
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
46 * Closes dlopened libraries.
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
47 */
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
48 void dvdinput_free(void);
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
49
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
50 /**
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
51 * Setup function accessed by dvd_reader.c. Returns 1 if there is CSS support.
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
52 */
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
53 int dvdinput_setup(void);
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
54
ea01824701a5 Rename internal libdvdread fork from dvdread to libdvdread
rathann
parents:
diff changeset
55 #endif /* DVD_INPUT_H_INCLUDED */