From 62401e85d08b097da5011180bf32f5e8683dcb80 Mon Sep 17 00:00:00 2001 From: Jaan Tallinn Date: Sat, 25 Apr 2020 23:58:23 +0300 Subject: [PATCH] Correctly handle cases where detected data contains null-bytes --- pyzbar/pyzbar.py | 7 +++++-- pyzbar/wrapper.py | 7 ++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/pyzbar/pyzbar.py b/pyzbar/pyzbar.py index ae44367..e411de8 100644 --- a/pyzbar/pyzbar.py +++ b/pyzbar/pyzbar.py @@ -9,7 +9,7 @@ zbar_image_scanner_create, zbar_image_scanner_destroy, zbar_image_create, zbar_image_destroy, zbar_image_set_format, zbar_image_set_size, zbar_image_set_data, zbar_scan_image, - zbar_image_first_symbol, zbar_symbol_get_data, + zbar_image_first_symbol, zbar_symbol_get_data_length, zbar_symbol_get_data, zbar_symbol_get_loc_size, zbar_symbol_get_loc_x, zbar_symbol_get_loc_y, zbar_symbol_next, ZBarConfig, ZBarSymbol, EXTERNAL_DEPENDENCIES ) @@ -97,7 +97,10 @@ def _decode_symbols(symbols): Decoded: decoded symbol """ for symbol in symbols: - data = string_at(zbar_symbol_get_data(symbol)) + data = string_at( + zbar_symbol_get_data(symbol), + zbar_symbol_get_data_length(symbol) + ) # The 'type' int in a value in the ZBarSymbol enumeration symbol_type = ZBarSymbol(symbol.contents.type).name polygon = convex_hull( diff --git a/pyzbar/wrapper.py b/pyzbar/wrapper.py index 4867220..6b5bd23 100644 --- a/pyzbar/wrapper.py +++ b/pyzbar/wrapper.py @@ -15,8 +15,9 @@ 'zbar_image_scanner_create', 'zbar_image_scanner_destroy', 'zbar_image_scanner_set_config', 'zbar_image_set_data', 'zbar_image_set_format', 'zbar_image_set_size', 'zbar_scan_image', - 'zbar_symbol_get_data', 'zbar_symbol_get_loc_size', - 'zbar_symbol_get_loc_x', 'zbar_symbol_get_loc_y', 'zbar_symbol_next' + 'zbar_symbol_get_data_length', 'zbar_symbol_get_data', + 'zbar_symbol_get_loc_size', 'zbar_symbol_get_loc_x', + 'zbar_symbol_get_loc_y', 'zbar_symbol_next' ] # Globals populated in load_libzbar @@ -234,7 +235,7 @@ def zbar_function(fname, restype, *args): zbar_symbol_get_data = zbar_function( 'zbar_symbol_get_data', - c_char_p, + c_ubyte_p, POINTER(zbar_symbol) )