changepw.c (102644) | changepw.c (103423) |
---|---|
1/* 2 * Copyright (c) 1997 - 2002 Kungliga Tekniska H�gskolan 3 * (Royal Institute of Technology, Stockholm, Sweden). 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 19 unchanged lines hidden (view full) --- 28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31 * SUCH DAMAGE. 32 */ 33 34#include <krb5_locl.h> 35 | 1/* 2 * Copyright (c) 1997 - 2002 Kungliga Tekniska H�gskolan 3 * (Royal Institute of Technology, Stockholm, Sweden). 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 19 unchanged lines hidden (view full) --- 28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31 * SUCH DAMAGE. 32 */ 33 34#include <krb5_locl.h> 35 |
36RCSID("$Id: changepw.c,v 1.35 2002/06/06 13:33:13 joda Exp $"); | 36RCSID("$Id: changepw.c,v 1.37 2002/09/03 16:14:34 nectar Exp $"); |
37 38static krb5_error_code 39send_request (krb5_context context, 40 krb5_auth_context *auth_context, 41 krb5_creds *creds, 42 int sock, 43 char *passwd, 44 const char *host) --- 7 unchanged lines hidden (view full) --- 52 u_char *p; 53 struct iovec iov[3]; 54 struct msghdr msghdr; 55 56 krb5_data_zero (&ap_req_data); 57 58 ret = krb5_mk_req_extended (context, 59 auth_context, | 37 38static krb5_error_code 39send_request (krb5_context context, 40 krb5_auth_context *auth_context, 41 krb5_creds *creds, 42 int sock, 43 char *passwd, 44 const char *host) --- 7 unchanged lines hidden (view full) --- 52 u_char *p; 53 struct iovec iov[3]; 54 struct msghdr msghdr; 55 56 krb5_data_zero (&ap_req_data); 57 58 ret = krb5_mk_req_extended (context, 59 auth_context, |
60 AP_OPTS_MUTUAL_REQUIRED, | 60 AP_OPTS_MUTUAL_REQUIRED | AP_OPTS_USE_SUBKEY, |
61 NULL, /* in_data */ 62 creds, 63 &ap_req_data); 64 if (ret) 65 return ret; 66 67 passwd_data.data = passwd; 68 passwd_data.length = strlen(passwd); --- 70 unchanged lines hidden (view full) --- 139 krb5_data *result_code_string, 140 krb5_data *result_string, 141 const char *host) 142{ 143 krb5_error_code ret; 144 u_char reply[BUFSIZ]; 145 size_t len; 146 u_int16_t pkt_len, pkt_ver; | 61 NULL, /* in_data */ 62 creds, 63 &ap_req_data); 64 if (ret) 65 return ret; 66 67 passwd_data.data = passwd; 68 passwd_data.length = strlen(passwd); --- 70 unchanged lines hidden (view full) --- 139 krb5_data *result_code_string, 140 krb5_data *result_string, 141 const char *host) 142{ 143 krb5_error_code ret; 144 u_char reply[BUFSIZ]; 145 size_t len; 146 u_int16_t pkt_len, pkt_ver; |
147 krb5_data ap_rep_data; | 147 krb5_data ap_rep_data, priv_data; |
148 int save_errno; 149 150 ret = recvfrom (sock, reply, sizeof(reply), 0, NULL, NULL); 151 if (ret < 0) { 152 save_errno = errno; 153 krb5_set_error_string(context, "recvfrom %s: %s", 154 host, strerror(save_errno)); 155 return save_errno; --- 12 unchanged lines hidden (view full) --- 168 str2data (result_string, 169 "client: wrong version number (%d)", pkt_ver); 170 *result_code = KRB5_KPASSWD_MALFORMED; 171 return 0; 172 } 173 174 ap_rep_data.data = reply + 6; 175 ap_rep_data.length = (reply[4] << 8) | (reply[5]); | 148 int save_errno; 149 150 ret = recvfrom (sock, reply, sizeof(reply), 0, NULL, NULL); 151 if (ret < 0) { 152 save_errno = errno; 153 krb5_set_error_string(context, "recvfrom %s: %s", 154 host, strerror(save_errno)); 155 return save_errno; --- 12 unchanged lines hidden (view full) --- 168 str2data (result_string, 169 "client: wrong version number (%d)", pkt_ver); 170 *result_code = KRB5_KPASSWD_MALFORMED; 171 return 0; 172 } 173 174 ap_rep_data.data = reply + 6; 175 ap_rep_data.length = (reply[4] << 8) | (reply[5]); |
176 priv_data.data = (u_char*)ap_rep_data.data + ap_rep_data.length; 177 priv_data.length = len - ap_rep_data.length - 6; 178 if ((u_char *)priv_data.data + priv_data.length >= reply + len) 179 return KRB5_KPASSWD_MALFORMED; |
|
176 177 if (ap_rep_data.length) { 178 krb5_ap_rep_enc_part *ap_rep; | 180 181 if (ap_rep_data.length) { 182 krb5_ap_rep_enc_part *ap_rep; |
179 krb5_data priv_data; | |
180 u_char *p; 181 182 ret = krb5_rd_rep (context, 183 auth_context, 184 &ap_rep_data, 185 &ap_rep); 186 if (ret) 187 return ret; 188 189 krb5_free_ap_rep_enc_part (context, ap_rep); 190 | 183 u_char *p; 184 185 ret = krb5_rd_rep (context, 186 auth_context, 187 &ap_rep_data, 188 &ap_rep); 189 if (ret) 190 return ret; 191 192 krb5_free_ap_rep_enc_part (context, ap_rep); 193 |
191 priv_data.data = (u_char*)ap_rep_data.data + ap_rep_data.length; 192 priv_data.length = len - ap_rep_data.length - 6; 193 | |
194 ret = krb5_rd_priv (context, 195 auth_context, 196 &priv_data, 197 result_code_string, 198 NULL); 199 if (ret) { 200 krb5_data_free (result_code_string); 201 return ret; --- 185 unchanged lines hidden --- | 194 ret = krb5_rd_priv (context, 195 auth_context, 196 &priv_data, 197 result_code_string, 198 NULL); 199 if (ret) { 200 krb5_data_free (result_code_string); 201 return ret; --- 185 unchanged lines hidden --- |