commit 95ccff5

default  ·  2023-12-10 09:00:17 +0000 UTC
parent d7fe3ba
process_input_message() returns -1 on errors.
1 files changed,  +8, -9
+8, -9
 1@@ -1468,13 +1468,17 @@ int update_question(snac *user, const char *id)
 2 int process_input_message(snac *snac, xs_dict *msg, xs_dict *req)
 3 /* processes an ActivityPub message from the input queue */
 4 {
 5-    /* actor and type exist, were checked previously */
 6     char *actor  = xs_dict_get(msg, "actor");
 7     char *type   = xs_dict_get(msg, "type");
 8     xs *actor_o = NULL;
 9     int a_status;
10     int do_notify = 0;
11 
12+    if (xs_is_null(actor) || *actor == '\0') {
13+        snac_debug(snac, 0, xs_fmt("malformed message (bad actor)"));
14+        return -1;
15+    }
16+
17     /* question votes may not have a type */
18     if (xs_is_null(type))
19         type = "Note";
20@@ -1482,12 +1486,7 @@ int process_input_message(snac *snac, xs_dict *msg, xs_dict *req)
21     /* reject uninteresting messages right now */
22     if (strcmp(type, "Add") == 0) {
23         snac_debug(snac, 0, xs_fmt("Ignored message of type '%s'", type));
24-        return 1;
25-    }
26-
27-    if (xs_is_null(actor)) {
28-        snac_debug(snac, 0, xs_fmt("malformed message"));
29-        return 1;
30+        return -1;
31     }
32 
33     char *object, *utype;
34@@ -1523,7 +1522,7 @@ int process_input_message(snac *snac, xs_dict *msg, xs_dict *req)
35         snac_debug(snac, 1,
36             xs_fmt("dropping message due to actor error %s %d", actor, a_status));
37 
38-        return 1;
39+        return -1;
40     }
41 
42     if (!valid_status(a_status)) {
43@@ -1542,7 +1541,7 @@ int process_input_message(snac *snac, xs_dict *msg, xs_dict *req)
44 
45         srv_archive_error("check_signature", sig_err, req, msg);
46 
47-        return 1;
48+        return -1;
49     }
50 
51     if (strcmp(type, "Follow") == 0) { /** **/