if (py_elements != NULL) {
Py_ssize_t i;
- if (PyBytes_Check(py_elements)) {
+ if (PyBytes_Check(py_elements) || PyStr_Check(py_elements)) {
char *_msg = NULL;
el->num_values = 1;
el->values = talloc_array(el, struct ldb_val, 1);
PyErr_NoMemory();
return NULL;
}
- result = PyBytes_AsStringAndSize(py_elements, &_msg, &size);
+ if (PyBytes_Check(py_elements)) {
+ result = PyBytes_AsStringAndSize(py_elements, &_msg, &size);
+ msg = _msg;
+ } else {
+ msg = PyStr_AsUTF8AndSize(py_elements, &size);
+ result = (msg == NULL) ? -1 : 0;
+ }
if (result != 0) {
talloc_free(mem_ctx);
return NULL;
}
- msg = _msg;
el->values[0].data = talloc_memdup(el->values,
(const uint8_t *)msg, size + 1);
el->values[0].length = size;