File: fix_python3_bindings.patch

package info (click to toggle)
libselinux 2.6-3
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 2,172 kB
  • ctags: 2,529
  • sloc: ansic: 16,149; makefile: 339; sh: 20
file content (77 lines) | stat: -rw-r--r-- 2,541 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
commit b8711e2eaf4f83bf943ac8ad28c35cb1db9c001f
Author: Laurent Bigonville <bigon@bigon.be>
Date:   Wed Nov 2 16:24:31 2016 +0100

    Revert "libselinux: support new python3 functions"
    
    With the reverted commit applied, some functions were returning arrays
    of bytes instead of python strings under python3 this was causing issues
    with string manipulation functions like split().
    
    Swig (checked with 3.0.7) is adding compatibility macros that take care
    of the differences between python2 and python3.
    
    This reverts commit 63df0f7ef12844b9b86cc293299671da772fcf84.
    
    Signed-off-by: Laurent Bigonville <bigon@bigon.be>

diff --git a/libselinux/src/selinuxswig_python.i b/libselinux/src/selinuxswig_python.i
index 8cea18d..43df291 100644
--- a/src/selinuxswig_python.i
+++ b/src/selinuxswig_python.i
@@ -64,7 +64,7 @@ def install(src, dest):
 	PyObject* list = PyList_New(*$2);
 	int i;
 	for (i = 0; i < *$2; i++) {
-		PyList_SetItem(list, i, PyBytes_FromString((*$1)[i]));
+		PyList_SetItem(list, i, PyString_FromString((*$1)[i]));
 	}
 	$result = SWIG_Python_AppendOutput($result, list);
 }
@@ -97,9 +97,7 @@ def install(src, dest):
 			len++;
 		plist = PyList_New(len);
 		for (i = 0; i < len; i++) {
-			PyList_SetItem(plist, i,
-                                       PyBytes_FromString((*$1)[i])
-                                       );
+			PyList_SetItem(plist, i, PyString_FromString((*$1)[i]));
 		}
 	} else {
 		plist = PyList_New(0);
@@ -116,9 +114,7 @@ def install(src, dest):
 	if (*$1) {
 		plist = PyList_New(result);
 		for (i = 0; i < result; i++) {
-			PyList_SetItem(plist, i,
-                                       PyBytes_FromString((*$1)[i])
-                                       );
+			PyList_SetItem(plist, i, PyString_FromString((*$1)[i]));
 		}
 	} else {
 		plist = PyList_New(0);
@@ -171,20 +167,16 @@ def install(src, dest):
 	$1 = (char**) malloc(size + 1);
 
 	for(i = 0; i < size; i++) {
-		if (!PyBytes_Check(PySequence_GetItem($input, i))) {
-			PyErr_SetString(PyExc_ValueError, "Sequence must contain only bytes");
-
+		if (!PyString_Check(PySequence_GetItem($input, i))) {
+			PyErr_SetString(PyExc_ValueError, "Sequence must contain only strings");
 			return NULL;
 		}
-
 	}
 		
 	for(i = 0; i < size; i++) {
 		s = PySequence_GetItem($input, i);
-
-		$1[i] = (char*) malloc(PyBytes_Size(s) + 1);
-		strcpy($1[i], PyBytes_AsString(s));
-
+		$1[i] = (char*) malloc(PyString_Size(s) + 1);
+		strcpy($1[i], PyString_AsString(s));
 	}
 	$1[size] = NULL;
 }