snac2

Fork of https://codeberg.org/grunfink/snac2
git clone https://git.inz.fi/snac2
Log | Files | Refs | README | LICENSE

commit c83b601f901553318d528f2e8a207a8461f88574
parent 4070c009f163ebcf948c7401a01ff99d301c529b
Author: default <nobody@localhost>
Date:   Fri, 31 Mar 2023 19:09:59 +0200

In is_msg_public(), also look at 'Announce' messages.

Diffstat:
Mactivitypub.c | 15+++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/activitypub.c b/activitypub.c @@ -297,10 +297,16 @@ int is_msg_public(snac *snac, xs_dict *msg) int is_msg_for_me(snac *snac, xs_dict *c_msg) /* checks if this message is for me */ { - char *type = xs_dict_get(c_msg, "type"); + const char *type = xs_dict_get(c_msg, "type"); + + /* if it's an Announce by someone we don't follow, reject */ + if (strcmp(type, "Announce") == 0) { + if (!following_check(snac, xs_dict_get(c_msg, "actor"))) + return 0; + } /* if it's not a Create, allow */ - if (xs_is_null(type) || strcmp(type, "Create") != 0) + if (strcmp(type, "Create") != 0) return 1; xs_dict *msg = xs_dict_get(c_msg, "object"); @@ -938,6 +944,11 @@ int process_input_message(snac *snac, xs_dict *msg, xs_dict *req) int a_status; int do_notify = 0; + if (xs_is_null(actor) || xs_is_null(type)) { + snac_debug(snac, 0, xs_fmt("malformed message")); + return 1; + } + char *object, *utype; object = xs_dict_get(msg, "object");