aboutsummaryrefslogtreecommitdiffstats
path: root/libavformat
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2015-05-29 11:31:55 +0200
committerMichael Niedermayer <michaelni@gmx.at>2015-05-29 11:32:07 +0200
commitfbeb3fa999e8712af35f1d898ca0b0cbab707556 (patch)
treeee9113b8c848d4ac68e4d8e873116dd285891272 /libavformat
parentbeecbe13a2ea49280554a7178bebc525e538b4e7 (diff)
parent0508faaa11bf7507ffdd655aee57c9dc5a8203f4 (diff)
downloadffmpeg-fbeb3fa999e8712af35f1d898ca0b0cbab707556.tar.gz
Merge commit '0508faaa11bf7507ffdd655aee57c9dc5a8203f4'
* commit '0508faaa11bf7507ffdd655aee57c9dc5a8203f4': rtmpdh: Pass the actual buffer size of the output secret key Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/rtmpcrypt.c2
-rw-r--r--libavformat/rtmpdh.c5
-rw-r--r--libavformat/rtmpdh.h6
3 files changed, 8 insertions, 5 deletions
diff --git a/libavformat/rtmpcrypt.c b/libavformat/rtmpcrypt.c
index 2312527d37..2065ec6602 100644
--- a/libavformat/rtmpcrypt.c
+++ b/libavformat/rtmpcrypt.c
@@ -163,7 +163,7 @@ int ff_rtmpe_compute_secret_key(URLContext *h, const uint8_t *serverdata,
/* compute the shared secret secret in order to compute RC4 keys */
if ((ret = ff_dh_compute_shared_secret_key(rt->dh, serverdata + server_pos,
- 128, secret_key)) < 0)
+ 128, secret_key, sizeof(secret_key))) < 0)
return ret;
/* set output key */
diff --git a/libavformat/rtmpdh.c b/libavformat/rtmpdh.c
index 894b7d5ccd..337341db81 100644
--- a/libavformat/rtmpdh.c
+++ b/libavformat/rtmpdh.c
@@ -313,7 +313,8 @@ int ff_dh_write_public_key(FF_DH *dh, uint8_t *pub_key, int pub_key_len)
}
int ff_dh_compute_shared_secret_key(FF_DH *dh, const uint8_t *pub_key,
- int pub_key_len, uint8_t *secret_key)
+ int pub_key_len, uint8_t *secret_key,
+ int secret_key_len)
{
FFBigNum q1 = NULL, pub_key_bn = NULL;
int ret;
@@ -333,7 +334,7 @@ int ff_dh_compute_shared_secret_key(FF_DH *dh, const uint8_t *pub_key,
/* when the public key is valid we have to compute the shared secret key */
if ((ret = dh_is_valid_public_key(pub_key_bn, dh->p, q1)) < 0) {
goto fail;
- } else if ((ret = dh_compute_key(dh, pub_key_bn, pub_key_len,
+ } else if ((ret = dh_compute_key(dh, pub_key_bn, secret_key_len,
secret_key)) < 0) {
ret = AVERROR(EINVAL);
goto fail;
diff --git a/libavformat/rtmpdh.h b/libavformat/rtmpdh.h
index cf262fc245..e498f5608f 100644
--- a/libavformat/rtmpdh.h
+++ b/libavformat/rtmpdh.h
@@ -92,11 +92,13 @@ int ff_dh_write_public_key(FF_DH *dh, uint8_t *pub_key, int pub_key_len);
*
* @param dh a Diffie-Hellmann context, containing the private key
* @param pub_key the buffer containing the public key
- * @param pub_key_len the length of the buffer
+ * @param pub_key_len the length of the public key buffer
* @param secret_key the buffer where the secret key is written
+ * @param secret_key_len the length of the secret key buffer
* @return length of the shared secret key on success, negative value otherwise
*/
int ff_dh_compute_shared_secret_key(FF_DH *dh, const uint8_t *pub_key,
- int pub_key_len, uint8_t *secret_key);
+ int pub_key_len, uint8_t *secret_key,
+ int secret_key_len);
#endif /* AVFORMAT_RTMPDH_H */