Просмотр исходного кода

Added and additional keyId check in 'Move'.

grunfink 1 месяц назад
Родитель
Сommit
84084ee024
1 измененных файлов с 7 добавлено и 2 удалено
  1. 7 2
      activitypub.c

+ 7 - 2
activitypub.c

@@ -3145,7 +3145,7 @@ int process_input_message(snac *snac, const xs_dict *msg, const xs_dict *req)
             const char *atto = get_atto(obj_data);
 
             if (atto == NULL)
-                snac_log(snac, xs_fmt("ignored 'Delete' for object with attributedTo %s", object));
+                snac_log(snac, xs_fmt("ignored 'Delete' for object without attributedTo %s", object));
             else
             if (strcmp(atto, key_id) != 0) {
                 snac_log(snac, xs_fmt("Delete: mismatched attributedTo '%s' and key '%s'", atto, key_id));
@@ -3195,7 +3195,12 @@ int process_input_message(snac *snac, const xs_dict *msg, const xs_dict *req)
         const char *old_account = xs_dict_get(msg, "object");
         const char *new_account = xs_dict_get(msg, "target");
 
-        if (!xs_is_null(old_account) && !xs_is_null(new_account)) {
+        if (xs_is_string(old_account) && xs_is_string(new_account)) {
+            if (strcmp(old_account, key_id) != 0) {
+                snac_log(snac, xs_fmt("'Move': mismatched old_account %s and key %s", old_account, key_id));
+                srv_archive_error("move_old_account_key_mismatch", "bad keyId", old_account, msg);
+            }
+            else
             if (following_check(snac, old_account)) {
                 xs *n_actor = NULL;