Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc
Commits
89e093a7
Commit
89e093a7
authored
Nov 26, 2007
by
Rafaël Carré
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update: performs size and m5 checksum verification (untested)
parent
3ba76bd8
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
82 additions
and
24 deletions
+82
-24
include/vlc_arrays.h
include/vlc_arrays.h
+1
-1
include/vlc_devices.h
include/vlc_devices.h
+1
-1
include/vlc_epg.h
include/vlc_epg.h
+1
-1
include/vlc_md5.h
include/vlc_md5.h
+24
-0
include/vlc_streaming.h
include/vlc_streaming.h
+1
-1
include/vlc_update.h
include/vlc_update.h
+2
-9
src/misc/update.c
src/misc/update.c
+52
-11
No files found.
include/vlc_arrays.h
View file @
89e093a7
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
* vlc_arrays.h : Arrays and data structures handling
* vlc_arrays.h : Arrays and data structures handling
*****************************************************************************
*****************************************************************************
* Copyright (C) 1999-2004 the VideoLAN team
* Copyright (C) 1999-2004 the VideoLAN team
* $Id
: vlc_playlist.h 17108 2006-10-15 15:28:34Z zorglub
$
* $Id$
*
*
* Authors: Samuel Hocevar <sam@zoy.org>
* Authors: Samuel Hocevar <sam@zoy.org>
* Clément Stenac <zorglub@videolan.org>
* Clément Stenac <zorglub@videolan.org>
...
...
include/vlc_devices.h
View file @
89e093a7
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
* vlc_devices.h : Devices handling
* vlc_devices.h : Devices handling
*****************************************************************************
*****************************************************************************
* Copyright (C) 1999-2006 the VideoLAN team
* Copyright (C) 1999-2006 the VideoLAN team
* $Id
: vlc_input.h 15915 2006-06-15 21:22:35Z zorglub
$
* $Id$
*
*
* Authors: Clément Stenac <zorglub@videolan.org>
* Authors: Clément Stenac <zorglub@videolan.org>
*
*
...
...
include/vlc_epg.h
View file @
89e093a7
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
* vlc_epg.h: Electronic Program Guide
* vlc_epg.h: Electronic Program Guide
*****************************************************************************
*****************************************************************************
* Copyright (C) 2007 the VideoLAN team
* Copyright (C) 2007 the VideoLAN team
* $Id
: vlc_meta.h 18214 2006-12-03 13:48:21Z zorglub
$
* $Id$
*
*
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*
*
...
...
include/vlc_md5.h
View file @
89e093a7
...
@@ -46,4 +46,28 @@ VLC_EXPORT(void, InitMD5, ( struct md5_s * ) );
...
@@ -46,4 +46,28 @@ VLC_EXPORT(void, InitMD5, ( struct md5_s * ) );
VLC_EXPORT
(
void
,
AddMD5
,
(
struct
md5_s
*
,
const
void
*
,
size_t
)
);
VLC_EXPORT
(
void
,
AddMD5
,
(
struct
md5_s
*
,
const
void
*
,
size_t
)
);
VLC_EXPORT
(
void
,
EndMD5
,
(
struct
md5_s
*
)
);
VLC_EXPORT
(
void
,
EndMD5
,
(
struct
md5_s
*
)
);
/**
* Returns a char representation of the md5 hash, as shown by UNIX md5 or
* md5sum tools.
*/
static
inline
char
*
psz_md5_hash
(
struct
md5_s
*
md5_s
)
{
char
*
psz
=
malloc
(
33
);
/* md5 string is 32 bytes + NULL character */
if
(
!
psz
)
return
NULL
;
int
i
;
for
(
i
=
0
;
i
<
4
;
i
++
)
{
sprintf
(
&
psz
[
8
*
i
],
"%02x%02x%02x%02x"
,
md5_s
->
p_digest
[
i
]
&
0xff
,
(
md5_s
->
p_digest
[
i
]
>>
8
)
&
0xff
,
(
md5_s
->
p_digest
[
i
]
>>
16
)
&
0xff
,
md5_s
->
p_digest
[
i
]
>>
24
);
}
psz
[
32
]
=
'\0'
;
return
psz
;
}
#endif
#endif
include/vlc_streaming.h
View file @
89e093a7
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
* vlc_streaming.h: Methods and descriptions for Streaming profiles
* vlc_streaming.h: Methods and descriptions for Streaming profiles
*****************************************************************************
*****************************************************************************
* Copyright (C) 2002-2005 the VideoLAN team
* Copyright (C) 2002-2005 the VideoLAN team
* $Id
: stream_output.h 14151 2006-02-04 00:08:50Z zorglub
$
* $Id$
*
*
* Authors: Clément Stenac <zorglub@videolan.org>
* Authors: Clément Stenac <zorglub@videolan.org>
*
*
...
...
include/vlc_update.h
View file @
89e093a7
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
* vlc_update.h: VLC update and plugins download
* vlc_update.h: VLC update and plugins download
*****************************************************************************
*****************************************************************************
* Copyright (C) 2005 the VideoLAN team
* Copyright (C) 2005 the VideoLAN team
* $Id
:
$
* $Id$
*
*
* Authors: Antoine Cellerier <dionoea -at- videolan -dot- org>
* Authors: Antoine Cellerier <dionoea -at- videolan -dot- org>
*
*
...
@@ -143,14 +143,7 @@ struct update_iterator_t
...
@@ -143,14 +143,7 @@ struct update_iterator_t
int
i_rs
;
///< Release status bitmask
int
i_rs
;
///< Release status bitmask
int
i_rt
;
///< Release type bitmask
int
i_rt
;
///< Release type bitmask
struct
struct
update_file_t
file
;
///< Local copy of the current file's information
{
int
i_type
;
///< Type
char
*
psz_md5
;
///< MD5 hash
long
int
l_size
;
///< Size in bytes
char
*
psz_url
;
///< Absolute URL
char
*
psz_description
;
///< Description
}
file
;
///< Local 'copy' of the current file's information
struct
struct
{
{
char
*
psz_version
;
///< Version string
char
*
psz_version
;
///< Version string
...
...
src/misc/update.c
View file @
89e093a7
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
* update.c: VLC update and plugins download
* update.c: VLC update and plugins download
*****************************************************************************
*****************************************************************************
* Copyright (C) 2005 the VideoLAN team
* Copyright (C) 2005 the VideoLAN team
* $Id
:
$
* $Id$
*
*
* Authors: Antoine Cellerier <dionoea -at- videolan -dot- org>
* Authors: Antoine Cellerier <dionoea -at- videolan -dot- org>
*
*
...
@@ -48,6 +48,7 @@
...
@@ -48,6 +48,7 @@
#include <vlc_xml.h>
#include <vlc_xml.h>
#include <vlc_interface.h>
#include <vlc_interface.h>
#include <vlc_charset.h>
#include <vlc_charset.h>
#include <vlc_md5.h>
/*****************************************************************************
/*****************************************************************************
* Misc defines
* Misc defines
...
@@ -1206,7 +1207,7 @@ unsigned int update_iterator_Action( update_iterator_t *p_uit, int i_action )
...
@@ -1206,7 +1207,7 @@ unsigned int update_iterator_Action( update_iterator_t *p_uit, int i_action )
typedef
struct
{
typedef
struct
{
VLC_COMMON_MEMBERS
VLC_COMMON_MEMBERS
char
*
psz_dest
;
//< Download destination
char
*
psz_dest
;
//< Download destination
char
*
psz_src
;
//< Download source
struct
update_file_t
src
;
//< Download source
char
*
psz_status
;
//< Download status displayed in progress dialog
char
*
psz_status
;
//< Download status displayed in progress dialog
}
download_thread_t
;
}
download_thread_t
;
...
@@ -1226,7 +1227,11 @@ void update_download( update_iterator_t *p_uit, const char *psz_dest )
...
@@ -1226,7 +1227,11 @@ void update_download( update_iterator_t *p_uit, const char *psz_dest )
vlc_object_create
(
p_uit
->
p_u
->
p_libvlc
,
sizeof
(
download_thread_t
)
);
vlc_object_create
(
p_uit
->
p_u
->
p_libvlc
,
sizeof
(
download_thread_t
)
);
p_dt
->
psz_dest
=
strdup
(
psz_dest
);
p_dt
->
psz_dest
=
strdup
(
psz_dest
);
p_dt
->
psz_src
=
strdup
(
p_uit
->
file
.
psz_url
);
p_dt
->
src
.
i_type
=
p_uit
->
file
.
i_type
;
p_dt
->
src
.
l_size
=
p_uit
->
file
.
l_size
;
p_dt
->
src
.
psz_md5
=
STRDUP
(
p_uit
->
file
.
psz_md5
);
p_dt
->
src
.
psz_url
=
STRDUP
(
p_uit
->
file
.
psz_description
);
p_dt
->
src
.
psz_description
=
STRDUP
(
p_uit
->
file
.
psz_description
);
asprintf
(
&
p_dt
->
psz_status
,
"%s - %s (%s)
\n
Source: %s
\n
Destination: %s"
,
asprintf
(
&
p_dt
->
psz_status
,
"%s - %s (%s)
\n
Source: %s
\n
Destination: %s"
,
p_uit
->
file
.
psz_description
,
p_uit
->
release
.
psz_version
,
p_uit
->
file
.
psz_description
,
p_uit
->
release
.
psz_version
,
p_uit
->
release
.
psz_svn_revision
,
p_uit
->
file
.
psz_url
,
p_uit
->
release
.
psz_svn_revision
,
p_uit
->
file
.
psz_url
,
...
@@ -1265,7 +1270,7 @@ static char *size_str( long int l_size )
...
@@ -1265,7 +1270,7 @@ static char *size_str( long int l_size )
void
update_download_for_real
(
download_thread_t
*
p_this
)
void
update_download_for_real
(
download_thread_t
*
p_this
)
{
{
char
*
psz_dest
=
p_this
->
psz_dest
;
char
*
psz_dest
=
p_this
->
psz_dest
;
char
*
psz_src
=
p_this
->
psz_src
;
char
*
psz_src
=
p_this
->
src
.
psz_url
;
stream_t
*
p_stream
;
stream_t
*
p_stream
;
libvlc_int_t
*
p_libvlc
=
p_this
->
p_libvlc
;
libvlc_int_t
*
p_libvlc
=
p_this
->
p_libvlc
;
...
@@ -1294,6 +1299,18 @@ void update_download_for_real( download_thread_t *p_this )
...
@@ -1294,6 +1299,18 @@ void update_download_for_real( download_thread_t *p_this )
}
}
else
else
{
{
l_size
=
stream_Size
(
p_stream
);
if
(
l_size
!=
p_this
->
src
.
l_size
)
{
stream_Delete
(
p_stream
);
free
(
psz_status
);
msg_Err
(
p_this
,
"%s hasn't a correct size (%li instead of %li)."
" Cancelling download."
,
p_this
->
src
.
psz_description
,
l_size
,
p_this
->
src
.
l_size
);
goto
end
;
}
p_file
=
utf8_fopen
(
psz_dest
,
"w"
);
p_file
=
utf8_fopen
(
psz_dest
,
"w"
);
if
(
!
p_file
)
if
(
!
p_file
)
{
{
...
@@ -1304,20 +1321,24 @@ void update_download_for_real( download_thread_t *p_this )
...
@@ -1304,20 +1321,24 @@ void update_download_for_real( download_thread_t *p_this )
}
}
else
else
{
{
long
int
l
_read
;
int
i
_read
;
char
*
psz_s1
;
char
*
psz_s2
;
char
*
psz_s1
;
char
*
psz_s2
;
struct
md5_s
md5_s
;
l_size
=
stream_Size
(
p_stream
);
p_buffer
=
(
void
*
)
malloc
(
1
<<
10
);
p_buffer
=
(
void
*
)
malloc
(
1
<<
10
);
if
(
p_buffer
)
if
(
p_buffer
)
{
{
while
(
(
l_read
=
stream_Read
(
p_stream
,
p_buffer
,
1
<<
10
)
)
)
if
(
p_this
->
src
.
i_type
&
(
UPDATE_FILE_TYPE_SOURCE
|
UPDATE_FILE_TYPE_BINARY
|
UPDATE_FILE_TYPE_PLUGIN
)
)
InitMD5
(
&
md5_s
);
while
(
(
i_read
=
stream_Read
(
p_stream
,
p_buffer
,
1
<<
10
)
)
)
{
{
float
f_progress
;
float
f_progress
;
fwrite
(
p_buffer
,
l_read
,
1
,
p_file
);
fwrite
(
p_buffer
,
i_read
,
1
,
p_file
);
if
(
p_this
->
src
.
i_type
&
(
UPDATE_FILE_TYPE_SOURCE
|
UPDATE_FILE_TYPE_BINARY
|
UPDATE_FILE_TYPE_PLUGIN
)
)
AddMD5
(
&
md5_s
,
p_buffer
,
(
size_t
)
i_read
);
l_done
+=
l
_read
;
l_done
+=
i
_read
;
free
(
psz_status
);
free
(
psz_status
);
f_progress
=
100
.
0
*
(
float
)
l_done
/
(
float
)
l_size
;
f_progress
=
100
.
0
*
(
float
)
l_done
/
(
float
)
l_size
;
psz_s1
=
size_str
(
l_done
);
psz_s1
=
size_str
(
l_done
);
...
@@ -1330,12 +1351,29 @@ void update_download_for_real( download_thread_t *p_this )
...
@@ -1330,12 +1351,29 @@ void update_download_for_real( download_thread_t *p_this )
intf_ProgressUpdate
(
p_libvlc
,
i_progress
,
intf_ProgressUpdate
(
p_libvlc
,
i_progress
,
psz_status
,
f_progress
,
0
);
psz_status
,
f_progress
,
0
);
}
}
free
(
p_buffer
);
free
(
p_buffer
);
}
}
fclose
(
p_file
);
fclose
(
p_file
);
stream_Delete
(
p_stream
);
stream_Delete
(
p_stream
);
if
(
l_done
==
p_this
->
src
.
l_size
&&
p_this
->
src
.
i_type
&
(
UPDATE_FILE_TYPE_SOURCE
|
UPDATE_FILE_TYPE_BINARY
|
UPDATE_FILE_TYPE_PLUGIN
)
)
{
EndMD5
(
&
md5_s
);
char
*
psz_md5
=
psz_md5_hash
(
&
md5_s
);
if
(
!
p_this
->
src
.
psz_md5
||
!
psz_md5
||
strncmp
(
psz_md5
,
p_this
->
src
.
psz_md5
,
32
)
)
{
msg_Err
(
p_this
,
_
(
"%s has an incorrect checksum, download failed or mirror is compromised.
\n
Please run an antivirus on %s, and report if that file is trojaned.
\n
If not, please try later."
),
p_this
->
src
.
psz_description
);
}
free
(
psz_md5
);
}
free
(
psz_status
);
free
(
psz_status
);
psz_s2
=
size_str
(
l_size
);
psz_s2
=
size_str
(
l_size
);
asprintf
(
&
psz_status
,
"%s
\n
Done %s (100.00%%)"
,
asprintf
(
&
psz_status
,
"%s
\n
Done %s (100.00%%)"
,
...
@@ -1346,8 +1384,11 @@ void update_download_for_real( download_thread_t *p_this )
...
@@ -1346,8 +1384,11 @@ void update_download_for_real( download_thread_t *p_this )
}
}
}
}
end:
free
(
p_this
->
psz_dest
);
free
(
p_this
->
psz_dest
);
free
(
p_this
->
psz_src
);
free
(
p_this
->
src
.
psz_url
);
free
(
p_this
->
src
.
psz_description
);
free
(
p_this
->
src
.
psz_md5
);
free
(
p_this
->
psz_status
);
free
(
p_this
->
psz_status
);
vlc_object_destroy
(
p_this
);
vlc_object_destroy
(
p_this
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment