summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Epler <jepler@gmail.com>2018-04-30 20:03:16 -0500
committerJeff Epler <jepler@gmail.com>2018-04-30 20:06:29 -0500
commit0f869bbbf11471f27c4327a3c3235ddaf7c10f2e (patch)
tree5b5875749921cb67844ee4cf2d2e56276b3eda1e
parente7f463320f8675d2f9acb6819ad0a2556672be08 (diff)
ubinascii: some functions should refuse unicode for python3 compatibility
.. this maybe should be subject to MICROPY_CPYTHON_COMPAT, except that is not defined in the main circuitpython ports so it would be a change that makes no difference.
-rw-r--r--extmod/modubinascii.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/extmod/modubinascii.c b/extmod/modubinascii.c
index 8256a50cf..9eff11d86 100644
--- a/extmod/modubinascii.c
+++ b/extmod/modubinascii.c
@@ -32,11 +32,20 @@
#include "py/binary.h"
#include "extmod/modubinascii.h"
+static void check_not_unicode(const mp_obj_t arg) {
+#if MICROPY_CPYTHON_COMPAT
+ if (MP_OBJ_IS_STR(arg)) {
+ mp_raise_TypeError("a bytes-like object is required");
+ }
+#endif
+}
+
mp_obj_t mod_binascii_hexlify(size_t n_args, const mp_obj_t *args) {
// Second argument is for an extension to allow a separator to be used
// between values.
const char *sep = NULL;
mp_buffer_info_t bufinfo;
+ check_not_unicode(args[0]);
mp_get_buffer_raise(args[0], &bufinfo, MP_BUFFER_READ);
// Code below assumes non-zero buffer length when computing size with
@@ -165,6 +174,7 @@ mp_obj_t mod_binascii_a2b_base64(mp_obj_t data) {
MP_DEFINE_CONST_FUN_OBJ_1(mod_binascii_a2b_base64_obj, mod_binascii_a2b_base64);
mp_obj_t mod_binascii_b2a_base64(mp_obj_t data) {
+ check_not_unicode(data);
mp_buffer_info_t bufinfo;
mp_get_buffer_raise(data, &bufinfo, MP_BUFFER_READ);
@@ -222,6 +232,7 @@ MP_DEFINE_CONST_FUN_OBJ_1(mod_binascii_b2a_base64_obj, mod_binascii_b2a_base64);
mp_obj_t mod_binascii_crc32(size_t n_args, const mp_obj_t *args) {
mp_buffer_info_t bufinfo;
+ check_not_unicode(args[0]);
mp_get_buffer_raise(args[0], &bufinfo, MP_BUFFER_READ);
uint32_t crc = (n_args > 1) ? mp_obj_get_int_truncated(args[1]) : 0;
crc = uzlib_crc32(bufinfo.buf, bufinfo.len, crc ^ 0xffffffff);