From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-io1-xd2f.google.com (mail-io1-xd2f.google.com [IPv6:2607:f8b0:4864:20::d2f]) by sourceware.org (Postfix) with ESMTPS id DE3883858C50 for ; Thu, 29 Jun 2023 13:13:04 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org DE3883858C50 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com Received: by mail-io1-xd2f.google.com with SMTP id ca18e2360f4ac-78372625badso25271839f.3 for ; Thu, 29 Jun 2023 06:13:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1688044384; x=1690636384; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=p9Qvtje6CX+d0D1h7tQo3unL7UT50cnlnCkyTY2W5JI=; b=gO5dhMuE0xArqZCBZBOa2Rhe1xKinpCg9cXRjhz5hKcXKXmioBt+T7h8wxGqQw5Gf+ yA89prk9RD0qYX0/qolG0Ac72AL0IMLzDzMziRmju5ckLFIh7gdq3G7FMzKMf+wjL2Xc vSkgqjaT+whfOxDlfWYBV2xCl2upePDPvE0MTFDKNZqk8/nnj7BwaQ+0unQDsS3Xk1KY idID+hBbnG/oN1kyo8GO2AjDQ2HVCJfhwP+QgxGFEqw7DeiOUIfLQUtwio2KTeO2vOWE 5lVfrH+t6UpbabV27iyX9Uc9+D9AJBAv/twj/gpaKX+dLRZoiH647Zs79TC7OBrB91MR usUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688044384; x=1690636384; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=p9Qvtje6CX+d0D1h7tQo3unL7UT50cnlnCkyTY2W5JI=; b=K/ZZ33pesn0kUG2olzITCE7ZQweyJoGwL7taDSCoSHYxM8/RRCrBZVkSauw7pUvwBq 2zi9m/GDP8A070HaH6CfU4XGRwAbrEQtmNEX2bVw6UfkyY1+U2wCGFgY2Ne5+q70moCx 3/rcdE+4ian3t3pq9SVVh1mo8jJckxFap5T6I12hKTI/jP9Q5CODHqeO4cHwn5hMYFD2 6pSt29gD66HfFYJlfno5RlfS4fOuLE7aCK9SEmT/uWVvrYcckiXxptANes7uB3+ES2Yj CYyzCrwHzpTQtFQ4b93/Jwhmstp8FF0bGI6yj8c9JAUWnEvwdgviItMB1XQyJApuYYJU KBdg== X-Gm-Message-State: AC+VfDxlZ5uQaFO2iacGvcddxfW0/CsdM9DEq1LehRWKjWlBq9FcEeae vpRNSU8bUgT/NqGMmCujlYhH+wRGfT4F18FqjOgYGA== X-Google-Smtp-Source: ACHHUZ7yhXY8OeyNpW4hdGBxf/wNMGUQr5diQHu8iLwSO14pfKq6iqEfxN44PMsqTZ2rdFsMuiH4bA== X-Received: by 2002:a05:6602:29af:b0:786:af7:e5c2 with SMTP id u15-20020a05660229af00b007860af7e5c2mr4513671ios.2.1688044384032; Thu, 29 Jun 2023 06:13:04 -0700 (PDT) Received: from localhost.localdomain (71-211-136-248.hlrn.qwest.net. [71.211.136.248]) by smtp.gmail.com with ESMTPSA id eq18-20020a0566384e3200b00426750059e1sm3928410jab.26.2023.06.29.06.13.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Jun 2023 06:13:03 -0700 (PDT) From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [PATCH] Fix two Python calls that don't check for errors Date: Thu, 29 Jun 2023 07:12:56 -0600 Message-Id: <20230629131256.4002834-1-tromey@adacore.com> X-Mailer: git-send-email 2.40.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-11.5 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: PyModule_AddObject steals a reference on success, but not on error, which is why we have gdb_pymodule_addobject. I found one spot still calling the former, which could in theory leak memory on failure. This patch fixes this. In the same function I found an unchecked call to PyDict_SetItemString. This patch fixes this as well. --- gdb/python/py-disasm.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/gdb/python/py-disasm.c b/gdb/python/py-disasm.c index 0af089f6b3e..6f0fed137e6 100644 --- a/gdb/python/py-disasm.c +++ b/gdb/python/py-disasm.c @@ -1647,11 +1647,15 @@ gdbpy_initialize_disasm () gdb_disassembler_module = PyModule_Create (&python_disassembler_module_def); if (gdb_disassembler_module == nullptr) return -1; - PyModule_AddObject(gdb_module, "disassembler", gdb_disassembler_module); + if (gdb_pymodule_addobject (gdb_module, "disassembler", + gdb_disassembler_module) < 0) + return -1; /* This is needed so that 'import _gdb.disassembler' will work. */ PyObject *dict = PyImport_GetModuleDict (); - PyDict_SetItemString (dict, "_gdb.disassembler", gdb_disassembler_module); + if (PyDict_SetItemString (dict, "_gdb.disassembler", + gdb_disassembler_module) < 0) + return -1; for (int i = 0; i <= (int) dis_style_comment_start; ++i) { -- 2.40.1