commit fbc30d1
grunfink
·
2026-06-24 09:22:11 +0000 UTC
parent 2135bdf
Added more checks for 'Delete' and 'Update'.
1 files changed,
+23,
-1
+23,
-1
1@@ -3086,6 +3086,16 @@ int process_input_message(snac *snac, const xs_dict *msg, const xs_dict *req)
2 snac_log(snac, xs_fmt("malformed message: no 'id' field"));
3 else
4 if (object_here(id)) {
5+ const char *atto = get_atto(object);
6+
7+ if (atto == NULL)
8+ snac_log(snac, xs_fmt("ignored post 'Update' with no attributedTo %s", id));
9+ else
10+ if (strcmp(atto, key_id) != 0) {
11+ snac_log(snac, xs_fmt("Update: mismatched attributedTo '%s' and key '%s'", atto, key_id));
12+ srv_archive_error("update_post_key_mismatch", "bad keyId", atto, key_id);
13+ }
14+ else
15 if (xs_startswith(id, srv_baseurl) && !xs_startswith(id, actor))
16 snac_log(snac, xs_fmt("ignored incorrect 'Update' %s %s", actor, id));
17 else {
18@@ -3126,10 +3136,22 @@ int process_input_message(snac *snac, const xs_dict *msg, const xs_dict *req)
19 if (xs_type(object) == XSTYPE_DICT)
20 object = xs_dict_get(object, "id");
21
22+ xs *obj_data = NULL;
23+
24 if (xs_is_null(object))
25 snac_log(snac, xs_fmt("malformed message: no 'id' field"));
26 else
27- if (object_here(object)) {
28+ if (valid_status(object_get(object, &obj_data))) {
29+ const char *atto = get_atto(obj_data);
30+
31+ if (atto == NULL)
32+ snac_log(snac, xs_fmt("ignored 'Delete' for object with attributedTo %s", object));
33+ else
34+ if (strcmp(atto, key_id) != 0) {
35+ snac_log(snac, xs_fmt("Delete: mismatched attributedTo '%s' and key '%s'", atto, key_id));
36+ srv_archive_error("delete_post_key_mismatch", "bad keyId", atto, key_id);
37+ }
38+ else
39 if (xs_startswith(object, srv_baseurl) && !is_msg_mine(snac, object))
40 snac_log(snac, xs_fmt("ignored incorrect 'Delete' %s %s", actor, object));
41 else {