From vova@express.ru  Wed Sep 26 06:08:54 2001
Return-Path: <vova@express.ru>
Received: from vbook.express.ru (asplinux.ru [195.133.213.194])
	by hub.freebsd.org (Postfix) with ESMTP id 90D1E37B418
	for <FreeBSD-gnats-submit@freebsd.org>; Wed, 26 Sep 2001 06:08:53 -0700 (PDT)
Received: from vova by vbook.express.ru with local (Exim 3.31 #2)
	id 15mESR-0000Q8-00
	for FreeBSD-gnats-submit@freebsd.org; Wed, 26 Sep 2001 17:10:35 +0400
Message-Id: <E15mESR-0000Q8-00@vbook.express.ru>
Date: Wed, 26 Sep 2001 17:10:35 +0400
From: Vladimir B.Grebenschikov <vova@express.ru>
Sender: "Vladimir B. Grebenschikov" <vova@express.ru>
Reply-To: Vladimir B.Grebenschikov <vova@express.ru>
To: FreeBSD-gnats-submit@freebsd.org
Cc:
Subject: pkg_add don't threat -t flag properly
X-Send-Pr-Version: 3.113
X-GNATS-Notify:

>Number:         30843
>Category:       bin
>Synopsis:       pkg_add don't threat -t flag properly
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Sep 26 06:10:00 PDT 2001
>Closed-Date:    Thu Oct 11 04:29:37 PDT 2001
>Last-Modified:  Thu Oct 11 04:31:05 PDT 2001
>Originator:     Vladimir B. Grebenschikov
>Release:        FreeBSD 5.0-CURRENT i386, 4.4-RELEASE
>Organization:
TSB "Russian Express"
>Environment:
System: FreeBSD vbook.express.ru 5.0-CURRENT FreeBSD 5.0-CURRENT #3: Mon Sep 24 15:59:42 MSD 2001 root@walder.asplinux.ru:/usr/obj/ext/current/src/sys/VBOOK i386

>Description:

pkg_add don't understand -t flag
according man:
     -t template
             Use template as the input to mktemp(3) when creating a `staging
             area''.  By default, this is the string /var/tmp/instmp.XXXXXX,
             but it may be necessary to override it in the situation where
             space in your /var/tmp directory is limited.  Be sure to leave
             some number of  characters for mktemp(3) to fill in with a
             unique ID.
reading source src/usr.sbin/pkg_install/lib/pen.c:

find_play_pen(char *pen, size_t sz)
{
    char *cp;
    struct stat sb;

    if (pen[0] && stat(pen, &sb) != FAIL && (min_free(pen) >= sz))
----------------- ^^^^^^^^^^^^^^
        return pen;
    else if ((cp = getenv("PKG_TMPDIR")) != NULL && stat(cp, &sb) != FAIL && (min_free(cp) >= sz))
        sprintf(pen, "%s/instmp.XXXXXX", cp);
    else if ((cp = getenv("TMPDIR")) != NULL && stat(cp, &sb) != FAIL && (min_free(cp) >= sz))
        sprintf(pen, "%s/instmp.XXXXXX", cp);
    else if (stat("/var/tmp", &sb) != FAIL && min_free("/var/tmp") >= sz)
        strcpy(pen, "/var/tmp/instmp.XXXXXX");
    else if (stat("/tmp", &sb) != FAIL && min_free("/tmp") >= sz)
        strcpy(pen, "/tmp/instmp.XXXXXX");
    else if ((stat("/usr/tmp", &sb) == SUCCESS || mkdir("/usr/tmp", 01777) == SUCCESS) && min_free("/usr/tmp") >= sz)
        strcpy(pen, "/usr/tmp/instmp.XXXXXX");
    else {
        cleanup(0);

So, if we run "pkg_add -t /tmp/SOMEXXXXX.tmp package" pkg_add will check /tmp/SOMEXXXXX.tmp
for existance and then completly ignore -t parametr instead of create /tmp/SOME<UNIQNUM>.tmp directory


>How-To-Repeat:

  pkg_add -t /tmp/some-none-existant-dir-for-template.XXXXX <package>

>Fix:

>Release-Note:
>Audit-Trail:
State-Changed-From-To: open->closed 
State-Changed-By: sobomax 
State-Changed-When: Thu Oct 11 04:29:37 PDT 2001 
State-Changed-Why:  
The fix for the problem has been committed into -current and will be MFC'ed 
into -stable shortly. Thank you for reporting! 

http://www.freebsd.org/cgi/query-pr.cgi?pr=30843 
>Unformatted:
