xref: /illumos-gate/usr/src/man/man3proc/pr_fcntl.3proc (revision 1a2d662a91cee3bf82f41cd47c7ae6f3825d9db2)
143051d27SRobert Mustacchi.\"
243051d27SRobert Mustacchi.\" This file and its contents are supplied under the terms of the
343051d27SRobert Mustacchi.\" Common Development and Distribution License ("CDDL"), version 1.0.
443051d27SRobert Mustacchi.\" You may only use this file in accordance with the terms of version
543051d27SRobert Mustacchi.\" 1.0 of the CDDL.
643051d27SRobert Mustacchi.\"
743051d27SRobert Mustacchi.\" A full copy of the text of the CDDL should have accompanied this
843051d27SRobert Mustacchi.\" source.  A copy of the CDDL is also available via the Internet at
943051d27SRobert Mustacchi.\" http://www.illumos.org/license/CDDL.
1043051d27SRobert Mustacchi.\"
1143051d27SRobert Mustacchi.\"
1243051d27SRobert Mustacchi.\" Copyright 2015 Joyent, Inc.
1343051d27SRobert Mustacchi.\"
14*1a2d662aSRobert Mustacchi.Dd July 30, 2024
1543051d27SRobert Mustacchi.Dt PR_FCNTL 3PROC
1643051d27SRobert Mustacchi.Os
1743051d27SRobert Mustacchi.Sh NAME
1843051d27SRobert Mustacchi.Nm pr_fcntl
1943051d27SRobert Mustacchi.Nd inject fcntl system call into victim process
20a7d7cafeSRobert Mustacchi.Sh LIBRARY
2143051d27SRobert Mustacchi.Lb libproc
22a7d7cafeSRobert Mustacchi.Sh SYNOPSIS
2343051d27SRobert Mustacchi.In libproc.h
2443051d27SRobert Mustacchi.Ft int
2543051d27SRobert Mustacchi.Fo pr_fcntl
2643051d27SRobert Mustacchi.Fa "struct ps_prochandle *P"
2743051d27SRobert Mustacchi.Fa "int fd"
2843051d27SRobert Mustacchi.Fa "int cmd"
29*1a2d662aSRobert Mustacchi.Fa "void *argp0"
30*1a2d662aSRobert Mustacchi.Fa "void *argp1"
3143051d27SRobert Mustacchi.Fc
3243051d27SRobert Mustacchi.Sh DESCRIPTION
3343051d27SRobert MustacchiThe
3443051d27SRobert Mustacchi.Fn pr_fcntl
3543051d27SRobert Mustacchifunction injects the
3643051d27SRobert Mustacchi.Xr fcntl 2
3743051d27SRobert Mustacchisystem call into the target process
3843051d27SRobert Mustacchi.Fa P
3943051d27SRobert Mustacchiby means of the agent LWP.
4043051d27SRobert MustacchiIf the process handle
4143051d27SRobert Mustacchi.Fa P
4243051d27SRobert Mustacchiis
4343051d27SRobert Mustacchi.Dv NULL
4443051d27SRobert Mustacchithen this is equivalent to calling
4543051d27SRobert Mustacchi.Xr fcntl 2
4643051d27SRobert Mustacchion the currently running process.
4743051d27SRobert Mustacchi.Pp
4843051d27SRobert MustacchiThe arguments
49*1a2d662aSRobert Mustacchi.Fa fd
5043051d27SRobert Mustacchiand
51*1a2d662aSRobert Mustacchi.Fa cmd
5243051d27SRobert Mustacchihave the same meaning as in
5343051d27SRobert Mustacchi.Xr fcntl 2 .
54*1a2d662aSRobert MustacchiThe value of
55*1a2d662aSRobert Mustacchi.Fa cmd
56*1a2d662aSRobert Mustacchidetermines how many arguments are passed.
57*1a2d662aSRobert MustacchiA command that takes no arguments, like
58*1a2d662aSRobert Mustacchi.Dv F_GETFD ,
59*1a2d662aSRobert Mustacchishould pass both
60*1a2d662aSRobert Mustacchi.Fa argp0
61*1a2d662aSRobert Mustacchiand
62*1a2d662aSRobert Mustacchi.Fa argp1
63*1a2d662aSRobert Mustacchias
64*1a2d662aSRobert Mustacchi.Dv NULL .
65*1a2d662aSRobert MustacchiA command that takes integer arguments, like
66*1a2d662aSRobert Mustacchi.Dv F_SETFL
67*1a2d662aSRobert Mustacchior
68*1a2d662aSRobert Mustacchi.Dv F_DUP3FD ,
69*1a2d662aSRobert Mustacchishould cast the integer arguments to a
70*1a2d662aSRobert Mustacchi.Fa "void *"
71*1a2d662aSRobert Mustacchiand pass unused arguments as
72*1a2d662aSRobert Mustacchi.Dv NULL .
7343051d27SRobert MustacchiSee
7443051d27SRobert Mustacchi.Xr fcntl 2
7543051d27SRobert Mustacchifor the full description and purpose of the
7643051d27SRobert Mustacchisystem call and its arguments.
7743051d27SRobert Mustacchi.Pp
7843051d27SRobert MustacchiThe
7943051d27SRobert Mustacchi.Fn pr_fcntl
8072d3dbb9SYuri Pankovfunction only works on active processes.
8172d3dbb9SYuri PankovProcess handles that correspond to core files, zombie processes, or ELF objects
8272d3dbb9SYuri Pankovdo not support system call injection.
8343051d27SRobert Mustacchi.Sh RETURN VALUES
8443051d27SRobert MustacchiUpon successful completion, the
8543051d27SRobert Mustacchi.Fn pr_fcntl
8643051d27SRobert Mustacchifunction's return value is that described in
8743051d27SRobert Mustacchi.Xr fcntl 2 .
8843051d27SRobert MustacchiOtherwise,
8943051d27SRobert Mustacchi.Sy -1
9043051d27SRobert Mustacchiis returned and
9143051d27SRobert Mustacchi.Sy errno
9243051d27SRobert Mustacchiis set to
9343051d27SRobert Mustacchi.Er ENOSYS
9443051d27SRobert Mustacchito indicate that the system call could not be injected.
9543051d27SRobert Mustacchi.Sh ERRORS
9643051d27SRobert MustacchiFor the full list of errors see the
9743051d27SRobert Mustacchi.Sy ERRORS
9843051d27SRobert Mustacchisection in
9943051d27SRobert Mustacchi.Xr fcntl 2 .
10043051d27SRobert Mustacchi.Pp
10143051d27SRobert MustacchiThe
10243051d27SRobert Mustacchi.Fn pr_fcntl
10343051d27SRobert Mustacchifunction will fail if:
10443051d27SRobert Mustacchi.Bl -tag -width Er
10543051d27SRobert Mustacchi.It Er ENOSYS
10643051d27SRobert MustacchiAn error occurred while trying to invoke the agent LWP and inject a
10743051d27SRobert Mustacchisystem call in the process handle
10843051d27SRobert Mustacchi.Fa P
10943051d27SRobert Mustacchior the process handle
11043051d27SRobert Mustacchi.Fa P
11143051d27SRobert Mustacchidoes not support system call injection.
11243051d27SRobert Mustacchi.El
11343051d27SRobert Mustacchi.Sh INTERFACE STABILITY
11443051d27SRobert Mustacchi.Sy Uncommitted
11543051d27SRobert Mustacchi.Sh MT-LEVEL
11643051d27SRobert MustacchiSee
11743051d27SRobert Mustacchi.Sy LOCKING
11843051d27SRobert Mustacchiin
11943051d27SRobert Mustacchi.Xr libproc 3LIB .
12043051d27SRobert Mustacchi.Sh SEE ALSO
12143051d27SRobert Mustacchi.Xr fcntl 2 ,
12243051d27SRobert Mustacchi.Xr libproc 3LIB ,
123bbf21555SRichard Lowe.Xr proc 5
124