From 5d47611ab5eb23c444909b92a554aa4170fe8a3a Mon Sep 17 00:00:00 2001 From: kazet Date: Sat, 31 Aug 2024 16:48:32 +0200 Subject: [PATCH] More robust fuzz-object (#41) --- docker_image/patch_wordpress.sh | 2 ++ fuzz_object.py | 28 +++++++++++++++++++--------- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/docker_image/patch_wordpress.sh b/docker_image/patch_wordpress.sh index 6b78b72..f3dbebb 100755 --- a/docker_image/patch_wordpress.sh +++ b/docker_image/patch_wordpress.sh @@ -44,6 +44,8 @@ else /var/www/html/wp-includes/option.php sed -i '/^function delete_site_option(/a fwrite(STDERR, "__GARLIC_CALL__" . json_encode(array("what" => "delete_site_option", "data" => array("name" => $option))) . "__ENDGARLIC__\\n");' \ /var/www/html/wp-includes/option.php + sed -i '/^function do_shortcode(/a fwrite(STDERR, "__GARLIC_CALL__" . json_encode(array("what" => "do_shortcode", "data" => array("content" => $content))) . "__ENDGARLIC__\\n");' \ + /var/www/html/wp-includes/shortcodes.php sed -i '/^function wp_delete_post(/a fwrite(STDERR, "__GARLIC_CALL__" . json_encode(array("what" => "wp_delete_post", "data" => array("id" => $postid))) . "__ENDGARLIC__\\n");' \ /var/www/html/wp-includes/post.php sed -i '/^function wp_insert_post(/a fwrite(STDERR, "__GARLIC_CALL__" . json_encode(array("what" => "wp_insert_post", "data" => $postarr)) . "__ENDGARLIC__\\n");' \ diff --git a/fuzz_object.py b/fuzz_object.py index 09d07b8..fa14ea5 100644 --- a/fuzz_object.py +++ b/fuzz_object.py @@ -78,21 +78,31 @@ def fuzz_object( from_file = False if "active_installs" not in object_info_dict: soup = bs4.BeautifulSoup(requests.get(f"https://wordpress.org/{object_type.value}s/{slug}/").content) - object_info_dict["active_installs"] = ( - soup.select("p.active_installs > strong")[0] - .text.replace("+", "") - .replace(",", "") - .replace("millions", "million") - .replace(" million", "000000") - ) + try: + object_info_dict["active_installs"] = ( + soup.select("p.active_installs > strong")[0] + .text.replace("+", "") + .replace(",", "") + .replace("millions", "million") + .replace(" million", "000000") + ) + except IndexError: + object_info_dict["active_installs"] = 0 if file_or_folder_to_fuzz == "OBJECT_ROOT": file_or_folder_to_fuzz = f"/var/www/html/wp-content/{object_type.value}s/{slug}" if version is None: - version = object_info_dict["version"] + if "version" in object_info_dict: + version = object_info_dict["version"] + else: + version = None active_installs = object_info_dict["active_installs"] - description = object_info_dict["sections"]["description"] + + try: + description = object_info_dict["sections"]["description"] + except KeyError: + description = "" dependencies = get_dependencies(slug, description)