don't free OID
[cyrus-sasl.git] / lib / common.c
index 620395a..2481697 100644 (file)
@@ -1209,18 +1209,12 @@ int sasl_setprop(sasl_conn_t *conn, int propnum, const void *value)
         ((sasl_client_conn_t *)conn)->cparams->gss_creds = (void *)value;
     break;
   case SASL_CHANNEL_BINDING: {
-    struct sasl_channel_binding *cb = (struct sasl_channel_binding *)value;
+    const struct sasl_channel_binding *cb = (const struct sasl_channel_binding *)value;
 
-    if (conn->type == SASL_CONN_SERVER) {
-        ((sasl_server_conn_t *)conn)->sparams->chanbindingtype = cb->type;
-        ((sasl_server_conn_t *)conn)->sparams->chanbindingdata = cb->data;
-        ((sasl_server_conn_t *)conn)->sparams->chanbindinglen = cb->len;
-        ((sasl_server_conn_t *)conn)->sparams->chanbindingcrit = cb->critical;
-    } else {
-        ((sasl_client_conn_t *)conn)->cparams->chanbindingtype = cb->type;
-        ((sasl_client_conn_t *)conn)->cparams->chanbindingdata = cb->data;
-        ((sasl_client_conn_t *)conn)->cparams->chanbindinglen = cb->len;
-    }
+    if (conn->type == SASL_CONN_SERVER)
+        ((sasl_server_conn_t *)conn)->sparams->cbinding = cb;
+    else
+        ((sasl_client_conn_t *)conn)->cparams->cbinding = cb;
     break;
   }
   default:
@@ -1282,6 +1276,7 @@ const char *sasl_errstring(int saslerr,
     case SASL_NOCHANGE:   return "requested change was not needed";
     case SASL_WEAKPASS:   return "passphrase is too weak for security policy";
     case SASL_NOUSERPASS: return "user supplied passwords are not permitted";
+    case SASL_BADBINDING: return "channel binding failure";
 
     default:   return "undefined error!";
     }