Samba sends zero length key requests for notify database. To support older
Samba behaviour for now, allow zero length key requests. Zero length key is
encoded as "NULL" string.
Signed-off-by: Amitay Isaacs <amitay@gmail.com>
arg0 = talloc_asprintf(result, "ctdb_lock-%s", ctdb_db->db_name);
arg1 = talloc_asprintf(result, "%d", result->fd[1]);
arg2 = talloc_strdup(result, ctdb_db->db_path);
- arg3 = hex_encode_talloc(result, key.dptr, key.dsize);
+ if (key.dsize == 0) {
+ arg3 = talloc_strdup(result, "NULL");
+ } else {
+ arg3 = hex_encode_talloc(result, key.dptr, key.dsize);
+ }
if (!arg0 || !arg1 || !arg2 || !arg3) {
close(result->fd[0]);
dbkey = argv[3];
/* Convert hex key to key */
- key.dptr = hex_decode_talloc(NULL, dbkey, &key.dsize);
+ if (strcmp(dbkey, "NULL") == 0) {
+ key.dptr = NULL;
+ key.dsize = 0;
+ } else {
+ key.dptr = hex_decode_talloc(NULL, dbkey, &key.dsize);
+ }
tdb = tdb_open(dbpath, 0, TDB_DEFAULT, O_RDWR, 0600);
if (tdb == NULL) {