<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
<div style="margin: 0px; font-size: 12pt; font-family: Calibri, Arial, Helvetica, sans-serif; color: black; background-color: white;">
Hello Professor,</div>
<div style="margin: 0px; font-size: 12pt; font-family: Calibri, Arial, Helvetica, sans-serif; color: black; background-color: white;">
<br>
</div>
<div style="margin: 0px; font-size: 12pt; font-family: Calibri, Arial, Helvetica, sans-serif; color: black; background-color: white;">
Sorry for the late reply, but here is the way I am able to reproduce it.</div>
<div style="margin: 0px; font-size: 12pt; font-family: Calibri, Arial, Helvetica, sans-serif; color: black; background-color: white;">
<br>
</div>
<div style="margin: 0px; font-size: 12pt; font-family: Calibri, Arial, Helvetica, sans-serif; color: black; background-color: white;">
This was the cgi-script that I was executing from the program:</div>
<div style="margin: 0px; font-size: 12pt; font-family: Calibri, Arial, Helvetica, sans-serif; color: black; background-color: white;">
<p style="font-size: 11px; font-family: Menlo; margin: 0px"><span style="margin: 0px; font-variant-ligatures: no-common-ligatures">#!/bin/sh</span></p>
<p style="font-size: 11px; font-family: Menlo; margin: 0px"><span style="margin: 0px; font-variant-ligatures: no-common-ligatures">echo &quot;Content-Type: text/html&quot;</span></p>
<p style="font-size: 11px; font-family: Menlo; margin: 0px"><span style="margin: 0px; font-variant-ligatures: no-common-ligatures">echo<span style="margin: 0px">&nbsp;</span></span></p>
<p style="font-size: 11px; font-family: Menlo; margin: 0px; min-height: 13px"><span style="margin: 0px; font-variant-ligatures: no-common-ligatures"></span><br>
</p>
<p style="font-size: 11px; font-family: Menlo; margin: 0px"><span style="margin: 0px; font-variant-ligatures: no-common-ligatures">env</span></p>
<br>
</div>
<div style="margin: 0px; font-size: 12pt; font-family: Calibri, Arial, Helvetica, sans-serif; color: black; background-color: white;">
The code that does not work is:</div>
<div style="margin: 0px; font-size: 12pt; font-family: Calibri, Arial, Helvetica, sans-serif; color: black; background-color: white;">
<p style="font-size: 11px; font-family: Menlo; margin: 0px"><span style="margin: 0px; font-variant-ligatures: no-common-ligatures">#include &lt;unistd.h&gt;</span></p>
<p style="font-size: 11px; font-family: Menlo; margin: 0px"><span style="margin: 0px; font-variant-ligatures: no-common-ligatures">#include &lt;stdlib.h&gt;</span></p>
<p style="font-size: 11px; font-family: Menlo; margin: 0px"><span style="margin: 0px; font-variant-ligatures: no-common-ligatures">#include &lt;string.h&gt;</span></p>
<p style="font-size: 11px; font-family: Menlo; margin: 0px"><span style="margin: 0px; font-variant-ligatures: no-common-ligatures">#include &lt;errno.h&gt;</span></p>
<p style="font-size: 11px; font-family: Menlo; margin: 0px"><span style="margin: 0px; font-variant-ligatures: no-common-ligatures">#include &lt;stdio.h&gt;</span></p>
<p style="font-size: 11px; font-family: Menlo; margin: 0px; min-height: 13px"><span style="margin: 0px; font-variant-ligatures: no-common-ligatures"></span><br>
</p>
<p style="font-size: 11px; font-family: Menlo; margin: 0px"><span style="margin: 0px; font-variant-ligatures: no-common-ligatures">int</span></p>
<p style="font-size: 11px; font-family: Menlo; margin: 0px"><span style="margin: 0px; font-variant-ligatures: no-common-ligatures">main(int argc, char **argv) {</span></p>
<p style="font-size: 11px; font-family: Menlo; margin: 0px"><span style="margin: 0px; font-variant-ligatures: no-common-ligatures"><span style="margin: 0px">&nbsp; &nbsp; &nbsp; &nbsp;<span>&nbsp;</span></span>(void) setenv(&quot;something&quot;, &quot;something&quot;, 1);</span></p>
<p style="font-size: 11px; font-family: Menlo; margin: 0px"><span style="margin: 0px; font-variant-ligatures: no-common-ligatures"><span style="margin: 0px">&nbsp; &nbsp; &nbsp; &nbsp;<span>&nbsp;</span></span>(void) execl(&quot;/cgi-bin/something.cgi&quot;, (char *) 0);</span></p>
<p style="font-size: 11px; font-family: Menlo; margin: 0px"><span style="margin: 0px; font-variant-ligatures: no-common-ligatures"><span style="margin: 0px">&nbsp; &nbsp; &nbsp; &nbsp;<span>&nbsp;</span></span>printf(&quot;%s\n&quot;, strerror(errno));<span style="margin: 0px">&nbsp;</span></span></p>
<p style="font-size: 11px; font-family: Menlo; margin: 0px"><span style="margin: 0px; font-variant-ligatures: no-common-ligatures"><span style="margin: 0px">&nbsp; &nbsp; &nbsp; &nbsp;<span>&nbsp;</span></span>return 1;</span></p>
<p style="font-size: 11px; font-family: Menlo; margin: 0px"><span style="margin: 0px; font-variant-ligatures: no-common-ligatures">}</span></p>
<br>
</div>
<div style="margin: 0px; font-size: 12pt; font-family: Calibri, Arial, Helvetica, sans-serif; color: black; background-color: white;">
This prints an <b>error</b> which is:</div>
<div style="margin: 0px; font-size: 12pt; font-family: Calibri, Arial, Helvetica, sans-serif; color: black; background-color: white;">
Bad Address</div>
<div style="margin: 0px; font-size: 12pt; font-family: Calibri, Arial, Helvetica, sans-serif; color: black; background-color: white;">
<br>
</div>
<div style="margin: 0px; font-size: 12pt; font-family: Calibri, Arial, Helvetica, sans-serif; color: black; background-color: white;">
This, on the other hand, gives me the desired result:</div>
<div style="margin: 0px; font-size: 12pt; font-family: Calibri, Arial, Helvetica, sans-serif; color: black; background-color: white;">
<p style="font-size: 11px; font-family: Menlo; margin: 0px"><span style="margin: 0px; font-variant-ligatures: no-common-ligatures">#include &lt;unistd.h&gt;</span></p>
<p style="font-size: 11px; font-family: Menlo; margin: 0px"><span style="margin: 0px; font-variant-ligatures: no-common-ligatures">#include &lt;stdlib.h&gt;</span></p>
<p style="font-size: 11px; font-family: Menlo; margin: 0px"><span style="margin: 0px; font-variant-ligatures: no-common-ligatures">#include &lt;string.h&gt;</span></p>
<p style="font-size: 11px; font-family: Menlo; margin: 0px"><span style="margin: 0px; font-variant-ligatures: no-common-ligatures">#include &lt;errno.h&gt;</span></p>
<p style="font-size: 11px; font-family: Menlo; margin: 0px"><span style="margin: 0px; font-variant-ligatures: no-common-ligatures">#include &lt;stdio.h&gt;</span></p>
<p style="font-size: 11px; font-family: Menlo; margin: 0px; min-height: 13px"><span style="margin: 0px; font-variant-ligatures: no-common-ligatures"></span><br>
</p>
<p style="font-size: 11px; font-family: Menlo; margin: 0px"><span style="margin: 0px; font-variant-ligatures: no-common-ligatures">int</span></p>
<p style="font-size: 11px; font-family: Menlo; margin: 0px"><span style="margin: 0px; font-variant-ligatures: no-common-ligatures">main(int argc, char **argv) {</span></p>
<p style="font-size: 11px; font-family: Menlo; margin: 0px"><span style="margin: 0px; font-variant-ligatures: no-common-ligatures"><span style="margin: 0px">&nbsp; &nbsp; &nbsp; &nbsp;<span>&nbsp;</span></span>(void) setenv(&quot;something&quot;, &quot;something&quot;, 1);</span></p>
<p style="font-size: 11px; font-family: Menlo; margin: 0px"><span style="margin: 0px; font-variant-ligatures: no-common-ligatures"><span style="margin: 0px">&nbsp; &nbsp; &nbsp; &nbsp;<span>&nbsp;</span></span>printf(&quot;\n&quot;); /*additional line compared to previous code*/</span></p>
<p style="font-size: 11px; font-family: Menlo; margin: 0px"><span style="margin: 0px; font-variant-ligatures: no-common-ligatures"><span style="margin: 0px">&nbsp; &nbsp; &nbsp; &nbsp;<span>&nbsp;</span></span>(void) execl(&quot;/cgi-bin/something.cgi&quot;, (char *) 0);</span></p>
<p style="font-size: 11px; font-family: Menlo; margin: 0px"><span style="margin: 0px; font-variant-ligatures: no-common-ligatures"><span style="margin: 0px">&nbsp; &nbsp; &nbsp; &nbsp;<span>&nbsp;</span></span>printf(&quot;%s\n&quot;, strerror(errno));<span style="margin: 0px">&nbsp;</span></span></p>
<p style="font-size: 11px; font-family: Menlo; margin: 0px"><span style="margin: 0px; font-variant-ligatures: no-common-ligatures"><span style="margin: 0px">&nbsp; &nbsp; &nbsp; &nbsp;<span>&nbsp;</span></span>return 1;</span></p>
<p style="font-size: 11px; font-family: Menlo; margin: 0px"><span style="margin: 0px; font-variant-ligatures: no-common-ligatures">}</span></p>
<br>
</div>
<div style="margin: 0px; font-size: 12pt; font-family: Calibri, Arial, Helvetica, sans-serif; color: black; background-color: white;">
<b>result</b>:</div>
<div style="margin: 0px; font-size: 12pt; font-family: Calibri, Arial, Helvetica, sans-serif; color: black; background-color: white;">
<p style="font: 11px Menlo; margin: 0px; min-height: 13px; color: rgb(0, 0, 0);">
<span style="font-variant-ligatures: no-common-ligatures; font-variant-ligatures: no-common-ligatures"></span><br>
</p>
<p style="font: 11px Menlo; margin: 0px; color: rgb(0, 0, 0);"><span style="font-variant-ligatures: no-common-ligatures; font-variant-ligatures: no-common-ligatures">Content-Type: text/html</span></p>
<p style="font: 11px Menlo; margin: 0px; min-height: 13px; color: rgb(0, 0, 0);">
<span style="font-variant-ligatures: no-common-ligatures; font-variant-ligatures: no-common-ligatures"></span><br>
</p>
<p style="font: 11px Menlo; margin: 0px; color: rgb(0, 0, 0);"><span style="font-variant-ligatures: no-common-ligatures; font-variant-ligatures: no-common-ligatures">ENV=/root/.shrc</span></p>
<p style="font: 11px Menlo; margin: 0px; color: rgb(0, 0, 0);"><span style="font-variant-ligatures: no-common-ligatures; font-variant-ligatures: no-common-ligatures">BLOCKSIZE=1k</span></p>
<p style="font: 11px Menlo; margin: 0px; color: rgb(0, 0, 0);"><span style="font-variant-ligatures: no-common-ligatures; font-variant-ligatures: no-common-ligatures">PWD=/root/programs/sws/APUE-Group</span></p>
<p style="font: 11px Menlo; margin: 0px; color: rgb(0, 0, 0);"><span style="font-variant-ligatures: no-common-ligatures; font-variant-ligatures: no-common-ligatures">MAIL=/var/mail/root</span></p>
<p style="font: 11px Menlo; margin: 0px; color: rgb(0, 0, 0);"><span style="font-variant-ligatures: no-common-ligatures; font-variant-ligatures: no-common-ligatures">HOME=/root</span></p>
<p style="font: 11px Menlo; margin: 0px; color: rgb(0, 0, 0);"><span style="font-variant-ligatures: no-common-ligatures; font-variant-ligatures: no-common-ligatures">PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/pkg/sbin:/usr/pkg/bin:/usr/X11R7/bin:/usr/local/sbin:/usr/local/bin</span></p>
<p style="font: 11px Menlo; margin: 0px; color: rgb(0, 0, 0);"><span style="font-variant-ligatures: no-common-ligatures; font-variant-ligatures: no-common-ligatures">HOST=localhost</span></p>
<p style="font: 11px Menlo; margin: 0px; color: rgb(0, 0, 0);"><span style="font-variant-ligatures: no-common-ligatures; font-variant-ligatures: no-common-ligatures">SSH_CONNECTION=10.0.2.2 62926 10.0.2.15 22</span></p>
<p style="font: 11px Menlo; margin: 0px; color: rgb(0, 0, 0);"><span style="font-variant-ligatures: no-common-ligatures; font-variant-ligatures: no-common-ligatures">SSH_TTY=/dev/pts/1</span></p>
<p style="font: 11px Menlo; margin: 0px; color: rgb(0, 0, 0);"><span style="font-variant-ligatures: no-common-ligatures; font-variant-ligatures: no-common-ligatures">TERM=xterm-256color</span></p>
<p style="font: 11px Menlo; margin: 0px; color: rgb(0, 0, 0);"><span style="font-variant-ligatures: no-common-ligatures; font-variant-ligatures: no-common-ligatures">OLDPWD=/root/programs/sws</span></p>
<p style="font: 11px Menlo; margin: 0px; color: rgb(0, 0, 0);"><span style="font-variant-ligatures: no-common-ligatures; font-variant-ligatures: no-common-ligatures">USER=root</span></p>
<p style="font: 11px Menlo; margin: 0px; color: rgb(0, 0, 0);"><span style="font-variant-ligatures: no-common-ligatures; font-variant-ligatures: no-common-ligatures">SSH_CLIENT=10.0.2.2 62926 22</span></p>
<p style="font: 11px Menlo; margin: 0px; color: rgb(0, 0, 0);"><span style="font-variant-ligatures: no-common-ligatures; font-variant-ligatures: no-common-ligatures">LOGNAME=root</span></p>
<p style="font: 11px Menlo; margin: 0px; color: rgb(0, 0, 0);"><span style="font-variant-ligatures: no-common-ligatures; font-variant-ligatures: no-common-ligatures">SHELL=/bin/sh</span></p>
<p style="font: 11px Menlo; margin: 0px; color: rgb(0, 0, 0);"><span style="font-variant-ligatures: no-common-ligatures; font-variant-ligatures: no-common-ligatures">something=something</span></p>
</div>
<div style="margin: 0px; font-size: 12pt; font-family: Calibri, Arial, Helvetica, sans-serif; color: black; background-color: white;">
<br>
</div>
<div style="margin: 0px; font-size: 12pt; font-family: Calibri, Arial, Helvetica, sans-serif; color: black; background-color: white;">
Thank you for helping me with this!</div>
<div style="margin: 0px; font-size: 12pt; font-family: Calibri, Arial, Helvetica, sans-serif; color: black; background-color: white;">
<br>
</div>
<div style="margin: 0px; font-size: 12pt; font-family: Calibri, Arial, Helvetica, sans-serif; color: black; background-color: white;">
Plus we also discussed on how to listen on all address, I found this which works:</div>
<div style="margin: 0px; font-size: 12pt; font-family: Calibri, Arial, Helvetica, sans-serif; color: black; background-color: white;">
setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY, &amp;off, sizeof(off))<br>
</div>
<div style="margin: 0px; font-size: 12pt; font-family: Calibri, Arial, Helvetica, sans-serif; color: black; background-color: white;">
<br>
</div>
<div style="margin: 0px; font-size: 12pt; font-family: Calibri, Arial, Helvetica, sans-serif; color: black; background-color: white;">
Regards,</div>
<div style="margin: 0px; font-size: 12pt; font-family: Calibri, Arial, Helvetica, sans-serif; color: black; background-color: white;">
Hem Shah</div>
<br>
</div>
<div id="appendonsend"></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size: 11pt;" data-ogsc=""><b>From:</b> cs631apue-bounces@lists.stevens.edu &lt;cs631apue-bounces@lists.stevens.edu&gt; on behalf of Jan Schaumann &lt;jschauma@stevens.edu&gt;<br>
<b>Sent:</b> Tuesday, November 26, 2019 7:03 PM<br>
<b>To:</b> cs631apue@lists.stevens.edu &lt;cs631apue@lists.stevens.edu&gt;<br>
<b>Subject:</b> [cs631apue] exec error</font>
<div>&nbsp;</div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt">
<div class="PlainText">Hello,<br>
<br>
One of you had reported a problem with setenv(2) and<br>
exec(2), where the invocation of setenv(2) somehow<br>
caused exec(2) to fail with EFAULT.<br>
<br>
I can't seem to reproduce the issue -- could you send<br>
your sample code that triggers this problem?<br>
<br>
Thanks,<br>
-Jan<br>
_______________________________________________<br>
cs631apue mailing list<br>
cs631apue@lists.stevens.edu<br>
<a href="https://lists.stevens.edu/mailman/listinfo/cs631apue" style="">https://lists.stevens.edu/mailman/listinfo/cs631apue</a><br>
</div>
</span></font></div>
</body>
</html>