<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 "Content-Type: text/html"</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"> </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 <unistd.h></span></p>
<p style="font-size: 11px; font-family: Menlo; margin: 0px"><span style="margin: 0px; font-variant-ligatures: no-common-ligatures">#include <stdlib.h></span></p>
<p style="font-size: 11px; font-family: Menlo; margin: 0px"><span style="margin: 0px; font-variant-ligatures: no-common-ligatures">#include <string.h></span></p>
<p style="font-size: 11px; font-family: Menlo; margin: 0px"><span style="margin: 0px; font-variant-ligatures: no-common-ligatures">#include <errno.h></span></p>
<p style="font-size: 11px; font-family: Menlo; margin: 0px"><span style="margin: 0px; font-variant-ligatures: no-common-ligatures">#include <stdio.h></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"> <span> </span></span>(void) setenv("something", "something", 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"> <span> </span></span>(void) execl("/cgi-bin/something.cgi", (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"> <span> </span></span>printf("%s\n", strerror(errno));<span style="margin: 0px"> </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"> <span> </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 <unistd.h></span></p>
<p style="font-size: 11px; font-family: Menlo; margin: 0px"><span style="margin: 0px; font-variant-ligatures: no-common-ligatures">#include <stdlib.h></span></p>
<p style="font-size: 11px; font-family: Menlo; margin: 0px"><span style="margin: 0px; font-variant-ligatures: no-common-ligatures">#include <string.h></span></p>
<p style="font-size: 11px; font-family: Menlo; margin: 0px"><span style="margin: 0px; font-variant-ligatures: no-common-ligatures">#include <errno.h></span></p>
<p style="font-size: 11px; font-family: Menlo; margin: 0px"><span style="margin: 0px; font-variant-ligatures: no-common-ligatures">#include <stdio.h></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"> <span> </span></span>(void) setenv("something", "something", 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"> <span> </span></span>printf("\n"); /*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"> <span> </span></span>(void) execl("/cgi-bin/something.cgi", (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"> <span> </span></span>printf("%s\n", strerror(errno));<span style="margin: 0px"> </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"> <span> </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, &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 <cs631apue-bounces@lists.stevens.edu> on behalf of Jan Schaumann <jschauma@stevens.edu><br>
<b>Sent:</b> Tuesday, November 26, 2019 7:03 PM<br>
<b>To:</b> cs631apue@lists.stevens.edu <cs631apue@lists.stevens.edu><br>
<b>Subject:</b> [cs631apue] exec error</font>
<div> </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>