X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fstream_out%2Fraop.c;h=c7e5a041f1e15faa42078904357a018fc892f857;hb=4b66a290d0ea4fd059c2498e4d1df9c60c1936df;hp=e4eaa4eabb350b6cd385322ce7533c00ee4e5cb8;hpb=9f58d70d0d52a3aa4fb6f7aab0d14f2c2f42c76d;p=vlc diff --git a/modules/stream_out/raop.c b/modules/stream_out/raop.c index e4eaa4eabb..c7e5a041f1 100644 --- a/modules/stream_out/raop.c +++ b/modules/stream_out/raop.c @@ -29,7 +29,6 @@ #endif #include -#include #include @@ -40,9 +39,11 @@ #include #include #include +#include #include #include #include +#include #define RAOP_PORT 5000 #define RAOP_USER_AGENT "VLC " VERSION @@ -446,7 +447,7 @@ static int EncryptAesKeyBase64( vlc_object_t *p_this, char **result ) unsigned char ps_padded_key[256]; unsigned char *ps_value; size_t i_value_size; - int i_err = VLC_SUCCESS; + int i_err; /* Add RSA-OAES-SHA1 padding */ i_err = AddOaepPadding( p_this, @@ -455,25 +456,20 @@ static int EncryptAesKeyBase64( vlc_object_t *p_this, char **result ) NULL, 0 ); if ( i_err != VLC_SUCCESS ) goto error; + i_err = VLC_EGENERIC; /* Read public key */ i_gcrypt_err = gcry_mpi_scan( &mpi_pubkey, GCRYMPI_FMT_USG, ps_raop_rsa_pubkey, sizeof( ps_raop_rsa_pubkey ) - 1, NULL ); if ( CheckForGcryptError( p_stream, i_gcrypt_err ) ) - { - i_err = VLC_EGENERIC; goto error; - } /* Read exponent */ i_gcrypt_err = gcry_mpi_scan( &mpi_exp, GCRYMPI_FMT_USG, ps_raop_rsa_exp, sizeof( ps_raop_rsa_exp ) - 1, NULL ); if ( CheckForGcryptError( p_stream, i_gcrypt_err ) ) - { - i_err = VLC_EGENERIC; goto error; - } /* If the input data starts with a set bit (0x80), gcrypt thinks it's a * signed integer and complains. Prefixing it with a zero byte (\0) @@ -484,45 +480,32 @@ static int EncryptAesKeyBase64( vlc_object_t *p_this, char **result ) ps_padded_key, sizeof( ps_padded_key ), NULL); if ( CheckForGcryptError( p_stream, i_gcrypt_err ) ) - { - i_err = VLC_EGENERIC; goto error; - } /* Build S-expression with RSA parameters */ i_gcrypt_err = gcry_sexp_build( &sexp_rsa_params, NULL, "(public-key(rsa(n %m)(e %m)))", mpi_pubkey, mpi_exp ); if ( CheckForGcryptError( p_stream, i_gcrypt_err ) ) - { - i_err = VLC_EGENERIC; goto error; - } /* Build S-expression for data */ i_gcrypt_err = gcry_sexp_build( &sexp_input, NULL, "(data(value %m))", mpi_input ); if ( CheckForGcryptError( p_stream, i_gcrypt_err ) ) - { - i_err = VLC_EGENERIC; goto error; - } /* Encrypt data */ i_gcrypt_err = gcry_pk_encrypt( &sexp_encrypted, sexp_input, sexp_rsa_params ); if ( CheckForGcryptError( p_stream, i_gcrypt_err ) ) - { - i_err = VLC_EGENERIC; goto error; - } /* Extract encrypted data */ sexp_token_a = gcry_sexp_find_token( sexp_encrypted, "a", 0 ); if ( !sexp_token_a ) { msg_Err( p_this , "Token 'a' not found in result S-expression" ); - i_err = VLC_EGENERIC; goto error; } @@ -530,7 +513,6 @@ static int EncryptAesKeyBase64( vlc_object_t *p_this, char **result ) if ( !mpi_output ) { msg_Err( p_this, "Unable to extract MPI from result" ); - i_err = VLC_EGENERIC; goto error; } @@ -539,12 +521,12 @@ static int EncryptAesKeyBase64( vlc_object_t *p_this, char **result ) mpi_output ); if ( CheckForGcryptError( p_stream, i_gcrypt_err ) ) { - i_err = VLC_EGENERIC; goto error; } /* Encode in Base64 */ *result = vlc_b64_encode_binary( ps_value, i_value_size ); + i_err = VLC_SUCCESS; error: gcry_sexp_release( sexp_rsa_params ); @@ -566,7 +548,7 @@ static char *ReadPasswordFile( vlc_object_t *p_this, const char *psz_path ) char *psz_newline; char ps_buffer[256]; - p_file = utf8_fopen( psz_path, "rt" ); + p_file = vlc_fopen( psz_path, "rt" ); if ( p_file == NULL ) { msg_Err( p_this, "Unable to open password file '%s': %m", psz_path ); @@ -590,12 +572,12 @@ static char *ReadPasswordFile( vlc_object_t *p_this, const char *psz_path ) } else { /* Replace first newline with '\0' */ - psz_newline = index( ps_buffer, '\n' ); + psz_newline = strchr( ps_buffer, '\n' ); if ( psz_newline != NULL ) *psz_newline = '\0'; } - if ( strlen( ps_buffer ) == 0 ) { + if ( *ps_buffer == '\0' ) { msg_Err( p_this, "No password could be read from '%s'", psz_path ); goto error; } @@ -646,15 +628,12 @@ static int ReadStatusLine( vlc_object_t *p_this ) char *psz_line = NULL; char *psz_token; char *psz_next; - int i_result; + int i_result = VLC_EGENERIC; p_sys->psz_last_status_line = net_Gets( p_this, p_sys->i_control_fd, NULL ); if ( !p_sys->psz_last_status_line ) - { - i_result = VLC_EGENERIC; goto error; - } /* Create working copy */ psz_line = strdup( p_sys->psz_last_status_line ); @@ -666,7 +645,6 @@ static int ReadStatusLine( vlc_object_t *p_this ) { msg_Err( p_this, "Unknown protocol (%s)", p_sys->psz_last_status_line ); - i_result = VLC_EGENERIC; goto error; } @@ -676,7 +654,6 @@ static int ReadStatusLine( vlc_object_t *p_this ) { msg_Err( p_this, "Request failed (%s)", p_sys->psz_last_status_line ); - i_result = VLC_EGENERIC; goto error; } @@ -1324,7 +1301,7 @@ static void SendAudio( sout_stream_t *p_stream, block_t *p_buffer ) /* Grow in blocks of 4K */ i_realloc_len = (1 + (i_len / 4096)) * 4096; - p_sys->p_sendbuf = realloc( p_sys->p_sendbuf, i_realloc_len ); + p_sys->p_sendbuf = realloc_or_free( p_sys->p_sendbuf, i_realloc_len ); if ( p_sys->p_sendbuf == NULL ) goto error;