1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
--- dvd.c.orig 2022-05-03 19:55:34 UTC
+++ dvd.c
@@ -176,7 +176,7 @@ int get_device( char *path, char *device )
if( !strcmp( path, buf.f_mntonname ) )
{
mounted = TRUE;
-#if defined(__FreeBSD__) && (__FreeBSD_Version > 500000)
+#if defined(__FreeBSD__) && (__FreeBSD_version > 500000)
strcpy(device, buf.f_mntfromname);
#else
strcpy(device, "/dev/r");
@@ -294,7 +294,7 @@ this is the code for the other-OSs, not solaris*/
#endif
- if( ( tmp_streamin = fopen( "/etc/mtab", "r" ) ) )
+ if( ( tmp_streamin = fopen( "/etc/fstab", "r" ) ) )
{
strcpy( tmp_path, path );
strcat( tmp_path, " " ); /* otherwise it would detect that e.g.
@@ -346,7 +346,7 @@ this is the code for the other-OSs, not solaris*/
if( ( k = strstr( tmp_bufferin, "/dev/" ) ) == NULL )
{
- fprintf( stderr, _("[Error] Weird, no /dev/ entry found in the line where iso9660 or udf gets mentioned in /etc/fstab\n") );
+ fprintf( stderr, _("[Error] Weird, no /dev/ entry found in the line where cd9660 or udf gets mentioned in /etc/fstab\n") );
return -1;
}
l=0;
@@ -404,7 +404,8 @@ int get_device_on_your_own( char *path, char *device )
struct statvfs *mntbuf;
#endif
- if( ( n = getmntinfo( &mntbuf, 0 ) ) > 0 )
+ path[0] = '\0';
+ if( ( n = getmntinfo( &mntbuf, MNT_NOWAIT ) ) > 0 )
{
for( i = 0; i < n; i++ )
{
@@ -412,7 +413,7 @@ int get_device_on_your_own( char *path, char *device )
{
dvd_count++;
strcpy( path, mntbuf[i].f_mntonname );
-#if defined(__FreeBSD__) && (__FreeBSD_Version > 500000)
+#if defined(__FreeBSD__) && (__FreeBSD_version > 500000)
strcat(device, mntbuf[i].f_mntfromname);
#else
strcpy(device, "/dev/r");
@@ -495,14 +496,14 @@ int get_device_on_your_own( char *path, char *device )
*read the device out of /etc/mtab
*/
- if( ( tmp_streamin = fopen( "/etc/mtab", "r" ) ) )
+ if( ( tmp_streamin = fopen( "/etc/fstab", "r" ) ) )
{
-/* strcpy(tmp_path, "iso9660"); */
+/* strcpy(tmp_path, "cd9660"); */
memset( tmp_bufferin, 0, MAX_STRING * sizeof( char ) );
while( fgets( tmp_bufferin, MAX_STRING, tmp_streamin ) )
{
/* if(strstr( tmp_bufferin, tmp_path)) */
- if (strstr( tmp_bufferin, "iso9660" ) ||
+ if (strstr( tmp_bufferin, "cd9660" ) ||
strstr( tmp_bufferin, "udf" ) ||
strstr( tmp_bufferin, "cdrom" ) ||
strstr( tmp_bufferin, "dvd" ) )
@@ -514,7 +515,7 @@ int get_device_on_your_own( char *path, char *device )
if( ( k = strstr( tmp_bufferin, "/dev/" ) ) == NULL )
{
- fprintf( stderr, _("[Error] Weird, no /dev/ entry found in the line where iso9660, udf or cdrom gets mentioned in /etc/mtab\n") );
+ fprintf( stderr, _("[Error] Weird, no /dev/ entry found in the line where cd9660, udf or cdrom gets mentioned in /etc/mtab\n") );
dvd_count--;
continue;
}
@@ -544,8 +545,17 @@ int get_device_on_your_own( char *path, char *device )
*/
- k = strstr( tmp_bufferin, " " );
+ k = strpbrk( tmp_bufferin, " \t" );
+ /* Avoid a core dump by checking that the break token
+ was found */
+ if ( k == NULL )
+ {
+ fprintf(stderr, "[Error] Unable to parse the /etc/fstab file\n");
+ path[0] = '\0';
+ return -1;
+ }
+
/*traverse the gap*/
if( isgraph( (int) *(k) ))
@@ -680,21 +690,6 @@ off_t get_vob_size( int title, char *provided_input_di
return ( off_t ) vob_size;
}
- sprintf( stat_path, "%s_1.vob", path_to_vobs3 );
- if( ( tmp_streamin1 = fopen( stat_path, "r" ) ) != NULL ) /*check if this path is correct */
- {
- fclose ( tmp_streamin1 );
- subvob = 1;
- while( !stat( stat_path, &buf ) )
- {
- /* adjust path for next subvob */
- subvob++;
- snprintf( stat_path, sizeof(stat_path), "%s_%d.vob", path_to_vobs3, subvob );
- vob_size += buf.st_size;
- }
- return ( off_t ) vob_size;
- }
-
/*none of the above seemed to have caught it, so this is the error return */
return ( off_t ) 0; /* think that (off_t) is not really needed here?
as it is defined as off_t and the function is
|