Re: pactester perl script bug fix

Skip to first unread message

Manu Garg

Apr 23, 2007, 3:36:21 PM4/23/07
to Glenn Zazulia,

Thanks a lot Glenn for catching this! Really appreciate it.

Changes pushed to SVN repository. I'll be releasing new version shortly.


P.S. This reminds me the need of unittests for pactester. I'll soon be
working on that.

On 4/23/07, Glenn Zazulia <> wrote:
> Hi,
> Thanks for making available the pactester tool. It's a useful test
> tool. While using it, I noticed that there is a bug with the dnsResolve
> subroutine -- at least it runs incorrectly on my Fedora FC6 system (perl
> 5.8.8). I haven't played with perl subroutine prototypes much, but
> there seems to be an issue with the way you declare dns_res($) and the
> way you call it in dnsResolve (@_). Your declaration expects a single
> scalar parameter, but you call it with a list. Even if the list might
> contain only a single scalar element during runtime, the prototypes are
> a compile-time feature. One might have expected the perl compiler to
> flag the call signature mismatch, but instead, it silently converts the
> list context to scalar context, just as it would do with the following
> statement: $nitems = @item_list. In other words, the $hostname
> variable in dns_res() ends up containing the value "1" (ie. the count of
> list elements) instead of the actual first element of the original list
> (ie. the hostname). If you remove the prototype declaration from
> dns_res, it runs properly. Alternatively, if you keep the prototype
> declaration but change the calling statement in dnsResolve from "dns_res
> @_" to "dns_res shift", it runs properly.
> Similarly, you have a mismatch and improper prototype declaration for
> myip / myIpAddress, though in this case it works fine since no actual
> parameter is processed, even though the declaration states that one is
> expected ($). Here, you should either remove the prototype and just use
> "sub myip" or else if you really like using perl sub prototypes, then
> change that line to the correct form specifying a prototype that expects
> no parameters: "sub myip()". You should also remove the "@_" parameter
> from the myip call in myIpAddress, since this subroutine shouldn't be
> passed any parameters.
> Otherwise, it's a great tool. Thanks again for it.
> Glenn Zazulia

Manu Garg
"Journey is the destination of life."

Reply all
Reply to author
0 new messages