Received: by 2002:a05:7412:8521:b0:e2:908c:2ebd with SMTP id t33csp673015rdf; Fri, 3 Nov 2023 11:22:21 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHd0mO4GOWpPNNwv1wBaLoBoIH8bdvSd8T8oFpt+5WLJSKSVJ24jZG1AnDfEiXlfeNS2pBB X-Received: by 2002:a05:6a00:2285:b0:68b:a137:373d with SMTP id f5-20020a056a00228500b0068ba137373dmr4846311pfe.17.1699035740664; Fri, 03 Nov 2023 11:22:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1699035740; cv=none; d=google.com; s=arc-20160816; b=BN+gu/IzjdRWsB/R0T41quwEQ4Y8Uog/mnj3uPqia8H9H2sy+S+JE7VLXISnfOLUAZ 5lhQEpepSOXOLUPz6mZQ+HwRVX7KjigvvNZ57FHTgmcEiNtNVBE/ufy12zvlYRrDCaNP HF4RhLY1FPpz8ZWueBRcvpxUJe8WnzPYjnMDonhFQT9Hja47Aks2bhoDbyFgOL8Bw0js jE96nS9/ZgIBYKWCAHmZDn65zJ1+xspAShxsIehtZ2oJv/k1CcmwFWLv32XaYMCMvbFZ d7Th9IPBNSfh9FwcDdXffg7yOTXXQlWz8BSZFn3jklydHNH1QMxPhec+XB5eO1BjlwV9 nCxw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=vU5rGqoVtooMCEwA0oz3mWplBHevamw/hKhyjDlFcSQ=; fh=q933pV6NrxIrJEaTU4dblERPskhjd3MnawLueTVokpc=; b=QCjl0psVL1MFjNzgJacLAqzdLZTj3B11H2/gmA8z0i+Bnj0CVqkBOdpkIt8RUQG7BN eB0WauH6iRD6pbkbfEJuf9n+11tSQiRBCr/SsCVUaUFbAvrZHTr3+FQEupJ/apldf0tk pCh4//VeOldUSU0VvWMrYCPQhalvOCIot+fi21avRmF9lfMkas7WMFP2qyAQIBYcql0u PbeLyRArBEltVHxMKxNgWAX4fc7ssktGzJJh7AKUCekTz4TW36lCdwc6yoYQYn1OPJt2 rBYj8fC/JFVtvuk7iJZpH0+dx4ig4KJq30ttQ2fm9N3ew54VYwseFJDGRb7pt5iZLNo5 GzpQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org Return-Path: Received: from fry.vger.email (fry.vger.email. [23.128.96.38]) by mx.google.com with ESMTPS id s9-20020aa78289000000b0068a3c575900si1894556pfm.84.2023.11.03.11.22.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 03 Nov 2023 11:22:20 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) client-ip=23.128.96.38; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by fry.vger.email (Postfix) with ESMTP id E3D2982E482B; Fri, 3 Nov 2023 11:22:10 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233971AbjKCSWL (ORCPT + 99 others); Fri, 3 Nov 2023 14:22:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44878 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233756AbjKCSWK (ORCPT ); Fri, 3 Nov 2023 14:22:10 -0400 Received: from mout-p-101.mailbox.org (mout-p-101.mailbox.org [80.241.56.151]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 48583D42 for ; Fri, 3 Nov 2023 11:22:08 -0700 (PDT) Received: from smtp1.mailbox.org (smtp1.mailbox.org [IPv6:2001:67c:2050:b231:465::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-101.mailbox.org (Postfix) with ESMTPS id 4SMTbv6w9Kz9sqJ; Fri, 3 Nov 2023 19:22:03 +0100 (CET) From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= To: linux-bluetooth@vger.kernel.org Cc: zbrown@gnome.org, =?UTF-8?q?Jonas=20Dre=C3=9Fler?= Subject: [PATCH BlueZ 4/4] lib/sdp: Pass size_t to sdp_get_string_attr() Date: Fri, 3 Nov 2023 19:21:50 +0100 Message-ID: <20231103182150.60088-5-verdre@v0yd.nl> In-Reply-To: <20231103182150.60088-1-verdre@v0yd.nl> References: <20231103182150.60088-1-verdre@v0yd.nl> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 4SMTbv6w9Kz9sqJ X-Spam-Status: No, score=-0.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,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 fry.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (fry.vger.email [0.0.0.0]); Fri, 03 Nov 2023 11:22:11 -0700 (PDT) We're currently type-casting the output of strlen(sdpdata->val.str) into an int, which is somewhat problematic given that strlen() can return values larger than sizeof(int). We can do better here and use size_t instead, so let's do that. While at it, also add a comment explaining why the check here is "smaller than" instead of "smaller than or equal". Co-developed-by: Zander Brown --- lib/sdp.c | 5 +++-- lib/sdp_lib.h | 14 +++++++------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/lib/sdp.c b/lib/sdp.c index 4b10d8f67..cff7e09fb 100644 --- a/lib/sdp.c +++ b/lib/sdp.c @@ -2180,13 +2180,14 @@ int sdp_get_int_attr(const sdp_record_t *rec, uint16_t attrid, int *value) } int sdp_get_string_attr(const sdp_record_t *rec, uint16_t attrid, char *value, - int valuelen) + size_t valuelen) { sdp_data_t *sdpdata = sdp_data_get(rec, attrid); if (sdpdata) /* Verify that it is what the caller expects */ if (SDP_IS_TEXT_STR(sdpdata->dtd)) - if ((int) strlen(sdpdata->val.str) < valuelen) { + /* Have to copy the NULL terminator too, so check len < valuelen */ + if (strlen(sdpdata->val.str) < valuelen) { strcpy(value, sdpdata->val.str); return 0; } diff --git a/lib/sdp_lib.h b/lib/sdp_lib.h index 22776b678..91d46f59d 100644 --- a/lib/sdp_lib.h +++ b/lib/sdp_lib.h @@ -141,7 +141,7 @@ int sdp_general_inquiry(inquiry_info *ii, int dev_num, int duration, uint8_t *fo /* flexible extraction of basic attributes - Jean II */ int sdp_get_int_attr(const sdp_record_t *rec, uint16_t attr, int *value); -int sdp_get_string_attr(const sdp_record_t *rec, uint16_t attr, char *value, int valuelen); +int sdp_get_string_attr(const sdp_record_t *rec, uint16_t attr, char *value, size_t valuelen); /* * Basic sdp data functions @@ -543,32 +543,32 @@ int sdp_get_service_avail(const sdp_record_t *rec, uint8_t *svcAvail); int sdp_get_service_ttl(const sdp_record_t *rec, uint32_t *svcTTLInfo); int sdp_get_database_state(const sdp_record_t *rec, uint32_t *svcDBState); -static inline int sdp_get_service_name(const sdp_record_t *rec, char *str, int len) +static inline int sdp_get_service_name(const sdp_record_t *rec, char *str, size_t len) { return sdp_get_string_attr(rec, SDP_ATTR_SVCNAME_PRIMARY, str, len); } -static inline int sdp_get_service_desc(const sdp_record_t *rec, char *str, int len) +static inline int sdp_get_service_desc(const sdp_record_t *rec, char *str, size_t len) { return sdp_get_string_attr(rec, SDP_ATTR_SVCDESC_PRIMARY, str, len); } -static inline int sdp_get_provider_name(const sdp_record_t *rec, char *str, int len) +static inline int sdp_get_provider_name(const sdp_record_t *rec, char *str, size_t len) { return sdp_get_string_attr(rec, SDP_ATTR_PROVNAME_PRIMARY, str, len); } -static inline int sdp_get_doc_url(const sdp_record_t *rec, char *str, int len) +static inline int sdp_get_doc_url(const sdp_record_t *rec, char *str, size_t len) { return sdp_get_string_attr(rec, SDP_ATTR_DOC_URL, str, len); } -static inline int sdp_get_clnt_exec_url(const sdp_record_t *rec, char *str, int len) +static inline int sdp_get_clnt_exec_url(const sdp_record_t *rec, char *str, size_t len) { return sdp_get_string_attr(rec, SDP_ATTR_CLNT_EXEC_URL, str, len); } -static inline int sdp_get_icon_url(const sdp_record_t *rec, char *str, int len) +static inline int sdp_get_icon_url(const sdp_record_t *rec, char *str, size_t len) { return sdp_get_string_attr(rec, SDP_ATTR_ICON_URL, str, len); } -- 2.41.0