summaryrefslogtreecommitdiff
path: root/contrib/pgcrypto/px.c
diff options
context:
space:
mode:
authorBruce Momjian2001-11-08 15:56:58 +0000
committerBruce Momjian2001-11-08 15:56:58 +0000
commit149d13de745beb5a29dcd1daa3f39e8819a4a4e5 (patch)
treeda9f0c4b4b66e755f13e3f2c600cc46c720b056f /contrib/pgcrypto/px.c
parent7e16f3c0d8831c25c3f95b77c7ad471f18a005eb (diff)
When given oversized key, encrypt/decrypt corrupted
memory. This fixes it. Also a free() was missing. marko
Diffstat (limited to 'contrib/pgcrypto/px.c')
-rw-r--r--contrib/pgcrypto/px.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/contrib/pgcrypto/px.c b/contrib/pgcrypto/px.c
index 20550bf1003..15d8f5daf7b 100644
--- a/contrib/pgcrypto/px.c
+++ b/contrib/pgcrypto/px.c
@@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: px.c,v 1.3 2001/10/25 05:49:20 momjian Exp $
+ * $Id: px.c,v 1.4 2001/11/08 15:56:58 momjian Exp $
*/
#include <postgres.h>
@@ -88,6 +88,8 @@ combo_init(PX_Combo * cx, const uint8 *key, uint klen,
memcpy(ivbuf, iv, ivlen);
}
+ if (klen > ks)
+ klen = ks;
keybuf = px_alloc(ks);
memset(keybuf, 0, ks);
memcpy(keybuf, key, klen);
@@ -96,6 +98,7 @@ combo_init(PX_Combo * cx, const uint8 *key, uint klen,
if (ivbuf)
px_free(ivbuf);
+ px_free(keybuf);
return err;
}