Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 2 Sep 1999 18:41:56 -0500 (CDT)
From:      pckizer@tamu.edu
To:        FreeBSD-gnats-submit@freebsd.org
Subject:   bin/13550: perl as distributed with 3.2-stable module Sys::Hostname garenteed to fail if no PATH defined prior to calling
Message-ID:  <199909022341.SAA02270@chariot.tamu.edu>

next in thread | raw e-mail | index | archive | help

>Number:         13550
>Category:       bin
>Synopsis:       If no PATH is defined when calling Sys::Hostname::hostname, the function will fail due to exit values of the eval-uated code segments
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Thu Sep  2 16:50:01 PDT 1999
>Closed-Date:
>Last-Modified:
>Originator:     Philip Kizer
>Release:        FreeBSD 3.2-STABLE i386
>Organization:
Texas A&M University
>Environment:

FreeBSD chariot.tamu.edu 3.2-STABLE FreeBSD 3.2-STABLE #1: Thu Sep  2 11:17:58 CDT 1999     root@chariot.tamu.edu:/usr/src/sys/compile/Console  i386

>Description:

I'm sending this as a FreeBSD send-pr since the Sys/Hostname.pm that came
with perl5.005_03 as of my latest cvsup this morning differs from the
Sys/Hostname.pm as shipped with perl5.005_03 as distributed via CPAN.

The Sys/Hostname.pm as cvsup-ed this morning differs from the CPAN
distributed perl5.005_03 Sys/Hostname.pm as follows:

--- /tmp/perl5.005_03/lib/Sys/Hostname.pm	Thu Sep  2 18:13:51 1999
+++ Hostname.pm-orig	Thu Sep  2 18:27:32 1999
@@ -95,4 +95,7 @@
     || eval {
+	$pathstack = $ENV{'PATH'};
+	$ENV{'PATH'} = "/bin:/usr/bin";
 	local $SIG{__DIE__};
 	$host = `(hostname) 2>/dev/null`; # bsdish
+	$ENV{'PATH'} = $pathstack;
     }
@@ -101,4 +104,7 @@
     || eval {
+	$pathstack = $ENV{'PATH'};
+	$ENV{'PATH'} = "/bin:/usr/bin";
 	local $SIG{__DIE__};
 	$host = `uname -n 2>/dev/null`; ## sysVish
+	$ENV{'PATH'} = $pathstack;
     }

The problem this causes is that the eval-ed blocks are guarenteed to be
taken as having failed as they will exit with the undef from the $ENV{'PATH'}
variable assignment in the case where there is no PATH defined prior to the
function call (such as, in my case, an automated invocation from sendmail),


>How-To-Repeat:

  % /usr/bin/perl -e 'use Sys::Hostname; print Sys::Hostname::hostname(),"\n";'
  chariot.tamu.edu

  % env PATH= /usr/bin/perl -e 'use Sys::Hostname; print Sys::Hostname::hostname(),"\n";'
  Cannot get host name of local machine at -e line 1


>Fix:

The code blocks need to exit with a return value based on the success of
the hostname determination.  My quick fix was the following:

--- Hostname.pm-orig	Thu Sep  2 18:27:32 1999
+++ Hostname.pm	Thu Sep  2 18:33:13 1999
@@ -100,2 +100,3 @@
 	$ENV{'PATH'} = $pathstack;
+	$host;
     }
@@ -109,2 +110,3 @@
 	$ENV{'PATH'} = $pathstack;
+	$host;
     }


>Release-Note:
>Audit-Trail:
>Unformatted:


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199909022341.SAA02270>