From patchwork Mon Oct 21 21:51:17 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 285286 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from userp1040.oracle.com (userp1040.oracle.com [156.151.31.81]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "userp1040.oracle.com", Issuer "VeriSign Class 3 International Server CA - G3" (not verified)) by ozlabs.org (Postfix) with ESMTPS id B2D272C0143 for ; Tue, 22 Oct 2013 08:51:44 +1100 (EST) Received: from acsinet21.oracle.com (acsinet21.oracle.com [141.146.126.237]) by userp1040.oracle.com (Sentrion-MTA-4.3.1/Sentrion-MTA-4.3.1) with ESMTP id r9LLpftw006890 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 21 Oct 2013 21:51:42 GMT Received: from oss.oracle.com (oss-external.oracle.com [137.254.96.51]) by acsinet21.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id r9LLpePN027807 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 21 Oct 2013 21:51:41 GMT Received: from localhost ([127.0.0.1] helo=oss.oracle.com) by oss.oracle.com with esmtp (Exim 4.63) (envelope-from ) id 1VYNO0-0003db-Pu; Mon, 21 Oct 2013 14:51:40 -0700 Received: from acsinet22.oracle.com ([141.146.126.238]) by oss.oracle.com with esmtp (Exim 4.63) (envelope-from ) id 1VYNNh-0003XQ-Jx for fedfs-utils-devel@oss.oracle.com; Mon, 21 Oct 2013 14:51:21 -0700 Received: from userp1030.oracle.com (userp1030.oracle.com [156.151.31.80]) by acsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id r9LLpKaf014017 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Mon, 21 Oct 2013 21:51:21 GMT Received: from mail-yh0-f47.google.com (mail-yh0-f47.google.com [209.85.213.47]) by userp1030.oracle.com (Sentrion-MTA-4.3.1/Sentrion-MTA-4.3.1) with ESMTP id r9LLpJkp029816 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=OK) for ; Mon, 21 Oct 2013 21:51:20 GMT Received: by mail-yh0-f47.google.com with SMTP id t59so1888929yho.6 for ; Mon, 21 Oct 2013 14:51:19 -0700 (PDT) X-Received: by 10.236.202.142 with SMTP id d14mr1546642yho.100.1382392279204; Mon, 21 Oct 2013 14:51:19 -0700 (PDT) Received: from manray.1015granger.net ([2604:8800:100:81fc:20c:29ff:fea5:adf]) by mx.google.com with ESMTPSA id o27sm30230867yhb.19.2013.10.21.14.51.18 for (version=TLSv1.2 cipher=AES128-GCM-SHA256 bits=128/128); Mon, 21 Oct 2013 14:51:18 -0700 (PDT) To: fedfs-utils-devel@oss.oracle.com From: Chuck Lever Date: Mon, 21 Oct 2013 17:51:17 -0400 Message-ID: <20131021215117.38809.31622.stgit@manray.1015granger.net> In-Reply-To: <20131021214030.38809.38712.stgit@manray.1015granger.net> References: <20131021214030.38809.38712.stgit@manray.1015granger.net> User-Agent: StGit/0.16 MIME-Version: 1.0 X-Flow-Control-Info: class=Pass-to-MM reputation=ipRisk-All ip=209.85.213.47 ct-class=R5 ct-vol1=-81 ct-vol2=7 ct-vol3=7 ct-risk=52 ct-spam1=81 ct-spam2=9 ct-bulk=6 rcpts=1 size=1145 X-SPF-Info: PASS::mail-yh0-f47.google.com X-Sendmail-CM-Score: 0.00% X-Sendmail-CM-Analysis: v=2.1 cv=buR1Wiqi c=1 sm=1 tr=0 a=7zyWUnxA5n2f/fZXonx59w==:117 a=dzsqy3y4QnMA:10 a=3QHkU8-Fv8oA:10 a=dPGociXpb70A:10 a=IkcTkHD0fZMA:10 a=xqWC_Br6kY4A:10 a=yPCof4ZbAAAA:8 a=Lb1rMZzfAAAA:8 a=1XWaLZrsAAAA:8 a=NKjppH4l2eYA:10 a=P4RtzSmhXJYMA CjuPw4A:9 a=QEXdDO2ut3YA:10 a=7DSvI1NPTFQA:10 X-Sendmail-CT-Classification: not spam X-Sendmail-CT-RefID: str=0001.0A090204.5265A1D8.0088, ss=1, re=0.000, recu=0.000, reip=0.000, cl=1, cld=1, fgs=0 Subject: [fedfs-utils] [PATCH 5/8] libsi: Handle multiple records in an SRV reply X-BeenThere: fedfs-utils-devel@oss.oracle.com X-Mailman-Version: 2.1.9 Precedence: list Reply-To: fedfs-utils Developers List-Id: fedfs-utils Developers List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: fedfs-utils-devel-bounces@oss.oracle.com Errors-To: fedfs-utils-devel-bounces@oss.oracle.com X-Source-IP: acsinet21.oracle.com [141.146.126.237] getservinfo() incorrectly returns ESI_PARSE when a domain has multiple SRV records. After each record in the buffer is parsed, "comp_dn" was not being incremented correctly. Only the first record was parsed correctly. Introduced by commit 0520ee72, "Initial commit," Mar 29 15:37:40 2011. Signed-off-by: Chuck Lever --- src/libsi/getsrvinfo.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/libsi/getsrvinfo.c b/src/libsi/getsrvinfo.c index 931847e..c0f433f 100644 --- a/src/libsi/getsrvinfo.c +++ b/src/libsi/getsrvinfo.c @@ -265,16 +265,17 @@ getsrvinfo(const char *srvname, const char *domainname, struct srvinfo **si) status = ESI_PARSE; goto out_free; } - comp_dn += l; record = (struct srv *)&comp_dn[10]; + comp_dn += 16; - l = dn_expand(msg, msg + len, comp_dn + 16, exp_dn, NS_MAXDNAME); + l = dn_expand(msg, msg + len, comp_dn, exp_dn, NS_MAXDNAME); if (l == -1) { status = ESI_PARSE; goto out_free; } + comp_dn += l; if (count == 1 && strcmp(exp_dn, ".") == 0) { status = ESI_SERVICE;