From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <3DyGCXggKClQ2BDAy4zw2AA270.yA874xwx42w47EAGDy0IwD0.AD2@flex--gprocida.bounces.google.com> Received: from mail-vs1-xe49.google.com (mail-vs1-xe49.google.com [IPv6:2607:f8b0:4864:20::e49]) by sourceware.org (Postfix) with ESMTPS id 2B707385DC04 for ; Mon, 30 Mar 2020 16:40:48 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 2B707385DC04 Received: by mail-vs1-xe49.google.com with SMTP id c62so4348378vsc.21 for ; Mon, 30 Mar 2020 09:40:48 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:message-id:mime-version:subject:from:to:cc; bh=JpOFTOssK4+PklmmtzuiHm4mzMJ6bzfyOnZMtEs7wSA=; b=lkvw9+pxoDcDs/UCQ0P37l8UWV+fbTLodr6lbqUc/bcuGP79scuLi6YkIVG0K2+QK5 Fh/XsudNZsVWkFhJ+HXHX5FW/NEdbPsru7IUpYucFK1DKmgMEdmJrDHODjkI4OGch+FV TuPLMB2JE5UvOmRebTml7HgBwW6YENwxDgrEIjXXSrxEiBSLvy69wMUXwf7hdHJ1h4Yo LJXycD/wkfhs1n0j99Sp0W+1rdNpZeK2HLY2jwFqNXLAqmpX2DqCQZ3yd2n1gW3y2D8n z3B5JQdJmDnsBvMHSRq3OWA29rgxACj3UGSiDD8UJP4qYjBHJoerlUqQvgpXxtbEiuT5 Djlg== X-Gm-Message-State: AGi0PuZEmZaAu30AbZPXp4amEqk74ivMRyQQmmqv/PD/135O7XaY07Zb 3Gtn8rHW6E5vZWz1vBWIrnNt2dTwNmtJ7G+LXstOnrOIZu8R2PIIdpZ2rEycdrHOmvOYwnb/Oqk XGJM2cPYiYIS35MkjFgJddYPU2XXcS/6ZDvjJRU0u7cx/9YcUd1nbh5BcA0g5RcrOPFp5cYo= X-Google-Smtp-Source: APiQypKujPKsJB71EotPlzk29RsKNTxEqbEHJwHvbA6GLYeEZUg0Wz50RCRdmnpwGEAwCRazUrqVzyhoD9eyvg== X-Received: by 2002:a67:b60c:: with SMTP id d12mr8191505vsm.196.1585586447575; Mon, 30 Mar 2020 09:40:47 -0700 (PDT) Date: Mon, 30 Mar 2020 17:40:41 +0100 Message-Id: <20200330164041.64666-1-gprocida@google.com> Mime-Version: 1.0 X-Mailer: git-send-email 2.26.0.rc2.310.g2932bb562d-goog Subject: [PATCH] abg-dwarf-reader.cc: Avoid division by zero. From: Giuliano Procida To: libabigail@sourceware.org Cc: dodji@seketeli.org, kernel-team@android.com, gprocida@google.com Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-34.1 required=5.0 tests=BAYES_00, DKIMWL_WL_MED, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libabigail@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libabigail mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Mar 2020 16:40:49 -0000 The DWARF reader could divide by zero when emitting statistics about late canonicalisation of types. This is undefined behaviour but typically results in process termination. * src/abg-dwarf-reader.cc (perform_late_type_canonicalizing): If total is zero, don't try to output percentages using it as a divisor. Signed-off-by: Giuliano Procida --- src/abg-dwarf-reader.cc | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/abg-dwarf-reader.cc b/src/abg-dwarf-reader.cc index 10ca1232..249e196d 100644 --- a/src/abg-dwarf-reader.cc +++ b/src/abg-dwarf-reader.cc @@ -5849,11 +5849,15 @@ public: << elf_path() << "\n"; cerr << " # late canonicalized types: " - << num_canonicalized - << " (" << num_canonicalized * 100 / total << "%)\n" + << num_canonicalized; + if (total) + cerr << " (" << num_canonicalized * 100 / total << "%)"; + cerr << "\n" << " # missed canonicalization opportunities: " - << num_missed - << " (" << num_missed * 100 / total << "%)\n"; + << num_missed; + if (total) + cerr << " (" << num_missed * 100 / total << "%)"; + cerr << "\n"; } } -- 2.26.0.rc2.310.g2932bb562d-goog