summaryrefslogtreecommitdiff
path: root/lib/libc/gen/popen.3
diff options
context:
space:
mode:
authorMarc Espie <espie@cvs.openbsd.org>2016-02-05 18:09:21 +0000
committerMarc Espie <espie@cvs.openbsd.org>2016-02-05 18:09:21 +0000
commit9dabcce55da6d672f27afa7c3cc49daf3ee3c3db (patch)
tree9088fee2db9b7f5a976329a104af6c265193029b /lib/libc/gen/popen.3
parent0695a43ca4f02f45ab456c59268c15fea752d048 (diff)
be more forceful about not using these.
improvements sthen@, jmc@. okay millert@, jca@ jmc@
Diffstat (limited to 'lib/libc/gen/popen.3')
-rw-r--r--lib/libc/gen/popen.326
1 files changed, 19 insertions, 7 deletions
diff --git a/lib/libc/gen/popen.3 b/lib/libc/gen/popen.3
index ba1b8cfc47f..7cda6a14fc1 100644
--- a/lib/libc/gen/popen.3
+++ b/lib/libc/gen/popen.3
@@ -1,4 +1,4 @@
-.\" $OpenBSD: popen.3,v 1.19 2014/08/31 02:21:18 guenther Exp $
+.\" $OpenBSD: popen.3,v 1.20 2016/02/05 18:09:20 espie Exp $
.\"
.\" Copyright (c) 1991, 1993
.\" The Regents of the University of California. All rights reserved.
@@ -27,7 +27,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.Dd $Mdocdate: August 31 2014 $
+.Dd $Mdocdate: February 5 2016 $
.Dt POPEN 3
.Os
.Sh NAME
@@ -158,6 +158,23 @@ and a
.Fn pclose
function appeared in
.At v7 .
+.Sh CAVEATS
+Never supply the
+.Fn popen
+function with a command containing any part of an unsanitized user-supplied
+string.
+Shell meta-characters present will be honored by the
+.Xr sh 1
+command interpreter.
+.Pp
+It is often simpler to bypass the shell entirely and use
+.Xr pipe 2 ,
+.Xr fork 2 ,
+.Xr dup2 2 ,
+.Xr execlp 3 ,
+and
+.Xr fdopen 3
+directly instead of having to sanitize a string for shell consumption.
.Sh BUGS
Since the standard input of a command opened for reading
shares its seek offset with the process that called
@@ -176,8 +193,3 @@ failure to execute
.Fa command ,
or an immediate exit of the command.
The only hint is an exit status of 127.
-.Pp
-The
-.Fn popen
-argument always calls
-.Xr sh 1 .