diff options
author | Johannes Berg <johannes@sipsolutions.net> | 2010-05-20 04:28:53 -0400 |
---|---|---|
committer | Johannes Berg <johannes@sipsolutions.net> | 2010-05-25 07:17:03 -0400 |
commit | 7859f181ab1f7289e582b8c2256d12d0f169118d (patch) | |
tree | caf75d6ed9b8120be3bf0928e398e6f620e1c813 | |
parent | 0ab540c4b72e3bdebfcbe7af84a70fa757ab3bf8 (diff) |
python: avoid crashes with fields
When accessing a field that doesn't exist,
we may get None, and then pass that NULL
pointer to C -- catch that and make the
num_field() method return None then.
Acked-by: Darren Hart <dvhltc@us.ibm.com>
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
-rw-r--r-- | ctracecmd.i | 1 | ||||
-rw-r--r-- | tracecmd.py | 2 |
2 files changed, 3 insertions, 0 deletions
diff --git a/ctracecmd.i b/ctracecmd.i index f3daad2..efd5629 100644 --- a/ctracecmd.i +++ b/ctracecmd.i | |||
@@ -5,6 +5,7 @@ | |||
5 | 5 | ||
6 | %apply Pointer NONNULL { struct tracecmd_input *handle }; | 6 | %apply Pointer NONNULL { struct tracecmd_input *handle }; |
7 | %apply Pointer NONNULL { struct pevent *pevent }; | 7 | %apply Pointer NONNULL { struct pevent *pevent }; |
8 | %apply Pointer NONNULL { struct format_field * }; | ||
8 | %apply unsigned long long *OUTPUT {unsigned long long *} | 9 | %apply unsigned long long *OUTPUT {unsigned long long *} |
9 | %apply int *OUTPUT {int *} | 10 | %apply int *OUTPUT {int *} |
10 | 11 | ||
diff --git a/tracecmd.py b/tracecmd.py index 26f3ac2..aa690f9 100644 --- a/tracecmd.py +++ b/tracecmd.py | |||
@@ -71,6 +71,8 @@ class Event(object): | |||
71 | 71 | ||
72 | def num_field(self, name): | 72 | def num_field(self, name): |
73 | f = pevent_find_any_field(self._format, name) | 73 | f = pevent_find_any_field(self._format, name) |
74 | if f is None: | ||
75 | return None | ||
74 | ret, val = pevent_read_number_field(f, record_data_get(self._record)) | 76 | ret, val = pevent_read_number_field(f, record_data_get(self._record)) |
75 | if ret: | 77 | if ret: |
76 | return None | 78 | return None |