nostrdb: Fix issue where id tag filters are pushed as strings
When creating filters, sometimes IDs are pushed as strings, so if there is ever a 0 byte, the id prematurely ends, causing the filter to not match Fixes: https://github.com/rust-nostr/nostr/issues/454 Signed-off-by: William Casarin <jb55@jb55.com>
This commit is contained in:
committed by
Daniel D’Aquino
parent
2d02a17af6
commit
8dd048681b
@@ -784,8 +784,18 @@ static int ndb_filter_add_element(struct ndb_filter *filter, union ndb_filter_el
|
||||
offset = el.integer;
|
||||
break;
|
||||
case NDB_FILTER_TAGS:
|
||||
if (!cursor_push_c_str(&filter->data_buf, el.string))
|
||||
switch (current->field.elem_type) {
|
||||
case NDB_ELEMENT_ID:
|
||||
if (!cursor_push(&filter->data_buf, (unsigned char *)el.id, 32))
|
||||
return 0;
|
||||
break;
|
||||
case NDB_ELEMENT_STRING:
|
||||
if (!cursor_push_c_str(&filter->data_buf, el.string))
|
||||
return 0;
|
||||
break;
|
||||
case NDB_ELEMENT_UNKNOWN:
|
||||
return 0;
|
||||
}
|
||||
// push a pointer of the string in the databuf as an element
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user