diff options
author | Martin Storsjö <martin@martin.st> | 2015-05-28 10:11:27 +0300 |
---|---|---|
committer | Martin Storsjö <martin@martin.st> | 2015-05-29 09:42:32 +0300 |
commit | 0508faaa11bf7507ffdd655aee57c9dc5a8203f4 (patch) | |
tree | 0dbb44c924f107ee9094c4caa078d504a2930c23 | |
parent | 9f1b3050d9e31e9283d818f3640f3460ac8cfb5b (diff) | |
download | ffmpeg-0508faaa11bf7507ffdd655aee57c9dc5a8203f4.tar.gz |
rtmpdh: Pass the actual buffer size of the output secret key
Signed-off-by: Martin Storsjö <martin@martin.st>
-rw-r--r-- | libavformat/rtmpcrypt.c | 2 | ||||
-rw-r--r-- | libavformat/rtmpdh.c | 5 | ||||
-rw-r--r-- | libavformat/rtmpdh.h | 6 |
3 files changed, 8 insertions, 5 deletions
diff --git a/libavformat/rtmpcrypt.c b/libavformat/rtmpcrypt.c index dfdd029a53..887427d205 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 80cced9312..f328e68fbf 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 5de8bde821..425113f78e 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 */ |