shishi-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

CVS shishi/lib


From: shishi-commit
Subject: CVS shishi/lib
Date: Fri, 17 Sep 2004 15:20:33 +0200

Update of /home/cvs/shishi/lib
In directory dopio:/tmp/cvs-serv22279

Modified Files:
        shishi.h.in principal.c krberror.c 
Log Message:
(shishi_krberror_cname):
(shishi_krberror_sname): Allocate output.
(shishi_principal_name_realm_get): Remove.


--- /home/cvs/shishi/lib/shishi.h.in    2004/09/17 13:11:22     1.248
+++ /home/cvs/shishi/lib/shishi.h.in    2004/09/17 13:20:33     1.249
@@ -649,12 +649,6 @@
 extern int shishi_principal_name_get (Shishi * handle, Shishi_asn1 namenode,
                                      const char *namefield, char *out,
                                      size_t * outlen);
-extern int shishi_principal_name_realm_get (Shishi * handle,
-                                           Shishi_asn1 namenode,
-                                           const char *namefield,
-                                           Shishi_asn1 realmnode,
-                                           const char *realmfield,
-                                           char *out, size_t * outlen);
 extern int shishi_principal_name_set (Shishi * handle,
                                      Shishi_asn1 namenode,
                                      const char *namefield,
@@ -1274,7 +1268,7 @@
                                       const char *crealm);
 extern int shishi_krberror_cname (Shishi * handle,
                                  Shishi_asn1 krberror,
-                                 char *out, size_t * outlen);
+                                 char **cname, size_t *cnamelen);
 extern int shishi_krberror_set_cname (Shishi * handle,
                                      Shishi_asn1 krberror,
                                      Shishi_name_type name_type,
@@ -1292,7 +1286,7 @@
                                      const char *realm);
 extern int shishi_krberror_sname (Shishi * handle,
                                  Shishi_asn1 krberror,
-                                 char *out, size_t * outlen);
+                                 char **sname, size_t *snamelen);
 extern int shishi_krberror_remove_sname (Shishi * handle,
                                         Shishi_asn1 krberror);
 extern int shishi_krberror_set_sname (Shishi * handle,
--- /home/cvs/shishi/lib/principal.c    2004/09/17 12:43:10     1.35
+++ /home/cvs/shishi/lib/principal.c    2004/09/17 13:20:33     1.36
@@ -406,58 +406,6 @@
   return SHISHI_OK;
 }
 
-int
-shishi_principal_name_realm_get (Shishi * handle,
-                                Shishi_asn1 namenode,
-                                const char *namefield,
-                                Shishi_asn1 realmnode,
-                                const char *realmfield,
-                                char *out, size_t * outlen)
-{
-  int res;
-  size_t totlen = 0, len;
-
-  /* FIXME: allocate output instead of writing inline */
-
-  totlen = *outlen;
-  res = shishi_principal_name_get (handle, namenode, namefield, out, &totlen);
-  if (res != SHISHI_OK)
-    return res;
-
-  if (realmnode == NULL && realmfield)
-    {
-      if (totlen + strlen ("@") + strlen (realmfield) > *outlen)
-       return SHISHI_TOO_SMALL_BUFFER;
-
-      memcpy (out + totlen, "@", strlen ("@"));
-      totlen += strlen ("@");
-      memcpy (out + totlen, realmfield, strlen (realmfield));
-      totlen += strlen (realmfield);
-    }
-  else if (realmnode != NULL)
-    {
-      if (totlen + strlen ("@") > *outlen)
-       return SHISHI_TOO_SMALL_BUFFER;
-
-      memcpy (out + totlen, "@", strlen ("@"));
-      totlen += strlen ("@");
-
-      len = *outlen - totlen;
-      res = shishi_asn1_read_inline (handle, realmnode, realmfield,
-                                    &out[totlen], &len);
-      if (res == SHISHI_ASN1_NO_ELEMENT)
-       totlen--;
-      else if (res != SHISHI_OK)
-       return res;
-      else
-       totlen += len;
-    }
-
-  *outlen = totlen;
-
-  return SHISHI_OK;
-}
-
 /**
  * shishi_principal_name_set:
  * @handle: shishi handle as allocated by shishi_init().
--- /home/cvs/shishi/lib/krberror.c     2004/09/10 10:00:00     1.36
+++ /home/cvs/shishi/lib/krberror.c     2004/09/17 13:20:33     1.37
@@ -298,11 +298,12 @@
        return rc;
     }
 
-  tmplen = sizeof (t);
-  rc = shishi_krberror_cname (handle, krberror, t, &tmplen);
+  rc = shishi_krberror_cname (handle, krberror, &tmp, &tmplen);
   if (rc != SHISHI_OK &&
       rc != SHISHI_ASN1_NO_ELEMENT && rc != SHISHI_ASN1_NO_VALUE)
     return rc;
+  if (rc == SHISHI_OK)
+    free (tmp);
   if (rc == SHISHI_ASN1_NO_VALUE || (rc == SHISHI_OK && tmplen == 0))
     {
       rc = shishi_krberror_remove_cname (handle, krberror);
@@ -322,10 +323,11 @@
        return rc;
     }
 
-  tmplen = sizeof (t);
-  rc = shishi_krberror_sname (handle, krberror, t, &tmplen);
+  rc = shishi_krberror_sname (handle, krberror, &tmp, &tmplen);
   if (rc != SHISHI_OK && rc != SHISHI_ASN1_NO_VALUE)
     return rc;
+  if (rc == SHISHI_OK)
+    free (tmp);
   if (rc == SHISHI_ASN1_NO_VALUE || tmplen == 0)
     {
       rc = shishi_krberror_remove_sname (handle, krberror);
@@ -472,9 +474,10 @@
  * shishi_krberror_cname:
  * @handle: shishi handle as allocated by shishi_init().
  * @krberror: krberror as allocated by shishi_krberror().
- * @out: output buffer that holds client name in KRB-ERROR.
- * @outlen: on input, maximum size of output buffer,
- *             on output, actual size of output buffer.
+ * @cname: pointer to newly allocated zero terminated string containing
+ *   principal name.  May be %NULL (to only populate @clientlen).
+ * @cnamelen: pointer to length of @cname on output, excluding terminating
+ *   zero.  May be %NULL (to only populate @client).
  *
  * Return client principal field in KRB-ERROR.
  *
@@ -482,11 +485,12 @@
  **/
 int
 shishi_krberror_cname (Shishi * handle,
-                      Shishi_asn1 krberror, char *out, size_t * outlen)
+                      Shishi_asn1 krberror,
+                      char **cname, size_t * cnamelen)
 {
   int rc;
 
-  rc = shishi_principal_name_get (handle, krberror, "cname", out, outlen);
+  rc = shishi_principal_name (handle, krberror, "cname", cname, cnamelen);
   if (rc != SHISHI_OK)
     return rc;
 
@@ -609,9 +613,10 @@
  * shishi_krberror_sname:
  * @handle: shishi handle as allocated by shishi_init().
  * @krberror: krberror as allocated by shishi_krberror().
- * @out: output buffer that holds server name in KRB-ERROR.
- * @outlen: on input, maximum size of output buffer,
- *             on output, actual size of output buffer.
+ * @sname: pointer to newly allocated zero terminated string containing
+ *   server name.  May be %NULL (to only populate @clientlen).
+ * @snamelen: pointer to length of @sname on output, excluding terminating
+ *   zero.  May be %NULL (to only populate @client).
  *
  * Return server principal field in KRB-ERROR.
  *
@@ -619,11 +624,12 @@
  **/
 int
 shishi_krberror_sname (Shishi * handle,
-                      Shishi_asn1 krberror, char *out, size_t * outlen)
+                      Shishi_asn1 krberror,
+                      char **sname, size_t *snamelen)
 {
   int rc;
 
-  rc = shishi_principal_name_get (handle, krberror, "sname", out, outlen);
+  rc = shishi_principal_name (handle, krberror, "sname", sname, snamelen);
   if (rc != SHISHI_OK)
     return rc;
 





reply via email to

[Prev in Thread] Current Thread [Next in Thread]