From f8f9bf06bc3190968ba6613032d60a3bf2c8a6d9 Mon Sep 17 00:00:00 2001 From: Justus Winter Date: Tue, 7 Jun 2016 16:07:33 +0200 Subject: [PATCH] python: Fix error handling. * lang/python/gpgme.i: Fix freeing an uninitialized pointer in the error handling of generated wrapper functions by explicitly storing the pointer in a local variable which can be initialized. Signed-off-by: Justus Winter --- lang/python/gpgme.i | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lang/python/gpgme.i b/lang/python/gpgme.i index e3695823..f466a874 100644 --- a/lang/python/gpgme.i +++ b/lang/python/gpgme.i @@ -1,4 +1,5 @@ /* +# Copyright (C) 2016 g10 Code GmbH # Copyright (C) 2004,2008 Igor Belyi # Copyright (C) 2002 John Goerzen # @@ -42,11 +43,11 @@ %typemap(freearg) const char * ""; /* Likewise for a list of strings. */ -%typemap(in) const char *[] { +%typemap(in) const char *[] (void *vector = NULL) { /* Check if is a list */ if (PyList_Check($input)) { size_t i, size = PyList_Size($input); - $1 = (char **) malloc((size+1) * sizeof(char *)); + $1 = (char **) (vector = malloc((size+1) * sizeof(char *))); for (i = 0; i < size; i++) { PyObject *o = PyList_GetItem($input,i); @@ -72,7 +73,7 @@ } } %typemap(freearg) const char *[] { - free((char *) $1); + free(vector$argnum); } // Release returned buffers as necessary.