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 |
