aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDag-Erling Smørgrav <des@FreeBSD.org>2003-11-20 07:55:08 +0000
committerDag-Erling Smørgrav <des@FreeBSD.org>2003-11-20 07:55:08 +0000
commit47f63312c580007871ae5e6a9fdb6b9fc6bd9008 (patch)
tree6bf5a1ffa69aeb4e556773d0c7ef8f52e829b75f
parent845c1b9ce2a429d14ffd57b09b899d7abb783eed (diff)
downloadsrc-47f63312c580007871ae5e6a9fdb6b9fc6bd9008.tar.gz
src-47f63312c580007871ae5e6a9fdb6b9fc6bd9008.zip
MFP4: fix confusion about the layout of resp (#42758)
Approved by: re (rwatson)
Notes
Notes: svn path=/vendor/openpam/dist/; revision=122912
-rw-r--r--contrib/openpam/lib/openpam_ttyconv.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/contrib/openpam/lib/openpam_ttyconv.c b/contrib/openpam/lib/openpam_ttyconv.c
index 48fe70ae9d71..1b91f16696aa 100644
--- a/contrib/openpam/lib/openpam_ttyconv.c
+++ b/contrib/openpam/lib/openpam_ttyconv.c
@@ -31,7 +31,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $P4: //depot/projects/openpam/lib/openpam_ttyconv.c#22 $
+ * $P4: //depot/projects/openpam/lib/openpam_ttyconv.c#23 $
*/
#include <sys/types.h>
@@ -179,13 +179,13 @@ openpam_ttyconv(int n,
resp[i]->resp = NULL;
switch (msg[i]->msg_style) {
case PAM_PROMPT_ECHO_OFF:
- resp[i]->resp = prompt_echo_off(msg[i]->msg);
- if (resp[i]->resp == NULL)
+ (*resp[i]).resp = prompt_echo_off(msg[i]->msg);
+ if ((*resp[i]).resp == NULL)
goto fail;
break;
case PAM_PROMPT_ECHO_ON:
- resp[i]->resp = prompt(msg[i]->msg);
- if (resp[i]->resp == NULL)
+ (*resp[i]).resp = prompt(msg[i]->msg);
+ if ((*resp[i]).resp == NULL)
goto fail;
break;
case PAM_ERROR_MSG:
@@ -206,11 +206,13 @@ openpam_ttyconv(int n,
}
RETURNC(PAM_SUCCESS);
fail:
- while (i)
- if (resp[--i]->resp) {
- memset(resp[i]->resp, 0, strlen(resp[i]->resp));
- FREE(resp[i]->resp);
+ for (i = 0; i < n; ++i) {
+ if ((*resp[i]).resp != NULL) {
+ memset((*resp[i]).resp, 0, strlen((*resp[i]).resp));
+ FREE((*resp[i]).resp);
}
+ }
+ memset(*resp, 0, n * sizeof **resp);
FREE(*resp);
RETURNC(PAM_CONV_ERR);
}