thesis: Compelete 2.4
This commit is contained in:
@@ -330,7 +330,22 @@ Example: \texttt{\tiny connect(2, 0x123:\{sa\_family: 2:AF\_INET, sin\_addr: "1.
|
|||||||
|
|
||||||
\section{Retrieving Function Return Values}\label{sec:retrieving-function-return-values}
|
\section{Retrieving Function Return Values}\label{sec:retrieving-function-return-values}
|
||||||
|
|
||||||
Lorem Ipsum.
|
It might seem that retrieving return values of functions is as straightforward as retrieving their arguments, but this is not entirely the case.
|
||||||
|
Most libc functions return -1 on error and set \texttt{errno} to indicate the exact type of error.
|
||||||
|
Other functions (like \texttt{read}, \texttt{pipe}, or \texttt{sem\_getvalue}) even store their output in a pointer which was given to them as an argument.
|
||||||
|
The following examples illustrate how this challenge was solved.
|
||||||
|
|
||||||
|
Example (\texttt{malloc}): \\
|
||||||
|
\texttt{return 0x1234; errno 0}, \\
|
||||||
|
\texttt{return -1; errno ENOMEM}.
|
||||||
|
|
||||||
|
Example (\texttt{pipe}): \\
|
||||||
|
\texttt{return 0; errno 0; fildes=[3,4]}, \\
|
||||||
|
\texttt{return -1; errno ENFILE}.
|
||||||
|
|
||||||
|
Example (\texttt{read}): \\
|
||||||
|
\texttt{return 12; errno 0; buf=0x7fff70:"Hello World!"}, \\
|
||||||
|
\texttt{return -1; errno EINTR}.
|
||||||
|
|
||||||
|
|
||||||
\section{Determining Function Call Location}\label{sec:determining-function-call-location}
|
\section{Determining Function Call Location}\label{sec:determining-function-call-location}
|
||||||
|
|||||||
Reference in New Issue
Block a user