errors.c 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. /** BEGIN COPYRIGHT BLOCK
  2. * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
  3. * Copyright (C) 2005 Red Hat, Inc.
  4. * All rights reserved.
  5. *
  6. * License: GPL (version 3 or any later version).
  7. * See LICENSE for details.
  8. * END COPYRIGHT BLOCK **/
  9. #ifdef HAVE_CONFIG_H
  10. #include <config.h>
  11. #endif
  12. #include <ldaputil/errors.h>
  13. #include <ldaputil/certmap.h>
  14. NSAPI_PUBLIC char *
  15. ldapu_err2string(int err)
  16. {
  17. char *rv;
  18. switch (err) {
  19. /* Error codes defined in certmap.h */
  20. case LDAPU_SUCCESS:
  21. rv = "success";
  22. break;
  23. case LDAPU_FAILED:
  24. rv = "ldap search didn't find an ldap entry";
  25. break;
  26. case LDAPU_CERT_MAP_FUNCTION_FAILED:
  27. rv = "Cert mapping function failed";
  28. break;
  29. case LDAPU_CERT_SEARCH_FUNCTION_FAILED:
  30. rv = "Cert search function failed";
  31. break;
  32. case LDAPU_CERT_VERIFY_FUNCTION_FAILED:
  33. rv = "Cert verify function failed";
  34. break;
  35. case LDAPU_CERT_MAP_INITFN_FAILED:
  36. rv = "Certmap InitFn function failed";
  37. break;
  38. /* Error codes returned by ldapdb.c */
  39. case LDAPU_ERR_URL_INVALID_PREFIX:
  40. rv = "invalid local ldap database url prefix -- must be ldapdb://";
  41. break;
  42. case LDAPU_ERR_URL_NO_BASEDN:
  43. rv = "base dn is missing in ldapdb url";
  44. break;
  45. case LDAPU_ERR_OUT_OF_MEMORY:
  46. rv = "out of memory";
  47. break;
  48. case LDAPU_ERR_LDAP_INIT_FAILED:
  49. rv = "Couldn't initialize connection to the ldap directory server";
  50. break;
  51. case LDAPU_ERR_LCACHE_INIT_FAILED:
  52. rv = "Couldn't initialize connection to the local ldap directory";
  53. break;
  54. case LDAPU_ERR_LDAP_SET_OPTION_FAILED:
  55. rv = "ldap_set_option failed for local ldap database";
  56. break;
  57. case LDAPU_ERR_NO_DEFAULT_CERTDB:
  58. rv = "default cert database not initialized when using LDAP over SSL";
  59. break;
  60. /* Errors returned by ldapauth.c */
  61. case LDAPU_ERR_CIRCULAR_GROUPS:
  62. rv = "Circular groups were detected during group membership check";
  63. break;
  64. case LDAPU_ERR_INVALID_STRING:
  65. rv = "Invalid string";
  66. break;
  67. case LDAPU_ERR_INVALID_STRING_INDEX:
  68. rv = "Invalid string index";
  69. break;
  70. case LDAPU_ERR_MISSING_ATTR_VAL:
  71. rv = "Missing attribute value from the search result";
  72. break;
  73. /* Errors returned by dbconf.c */
  74. case LDAPU_ERR_CANNOT_OPEN_FILE:
  75. rv = "cannot open the config file";
  76. break;
  77. case LDAPU_ERR_DBNAME_IS_MISSING:
  78. rv = "database name is missing";
  79. break;
  80. case LDAPU_ERR_PROP_IS_MISSING:
  81. rv = "database property is missing";
  82. break;
  83. case LDAPU_ERR_DIRECTIVE_IS_MISSING:
  84. rv = "illegal directive in the config file";
  85. break;
  86. case LDAPU_ERR_NOT_PROPVAL:
  87. rv = "internal error - LDAPU_ERR_NOT_PROPVAL";
  88. break;
  89. /* Error codes returned by certmap.c */
  90. case LDAPU_ERR_NO_ISSUERDN_IN_CERT:
  91. rv = "cannot extract issuer DN from the cert";
  92. break;
  93. case LDAPU_ERR_NO_ISSUERDN_IN_CONFIG_FILE:
  94. rv = "issuer DN missing for non-default certmap";
  95. break;
  96. case LDAPU_ERR_CERTMAP_INFO_MISSING:
  97. rv = "cert to ldap entry mapping information is missing";
  98. break;
  99. case LDAPU_ERR_MALFORMED_SUBJECT_DN:
  100. rv = "Found malformed subject DN in the certificate";
  101. break;
  102. case LDAPU_ERR_MAPPED_ENTRY_NOT_FOUND:
  103. rv = "Certificate couldn't be mapped to an ldap entry";
  104. break;
  105. case LDAPU_ERR_UNABLE_TO_LOAD_PLUGIN:
  106. rv = "Unable to load certmap plugin library";
  107. break;
  108. case LDAPU_ERR_MISSING_INIT_FN_IN_CONFIG:
  109. rv = "InitFn must be provided when using certmap plugin library";
  110. break;
  111. case LDAPU_ERR_MISSING_INIT_FN_IN_LIB:
  112. rv = "Could not find InitFn in the certmap plugin library";
  113. break;
  114. case LDAPU_ERR_CERT_VERIFY_FAILED:
  115. rv = "Could not matching certificate in User's LDAP entry";
  116. break;
  117. case LDAPU_ERR_CERT_VERIFY_NO_CERTS:
  118. rv = "User's LDAP entry doesn't have any certificates to compare";
  119. break;
  120. case LDAPU_ERR_MISSING_LIBNAME:
  121. rv = "Library name is missing in the config file";
  122. break;
  123. case LDAPU_ERR_MISSING_INIT_FN_NAME:
  124. rv = "Init function name is missing in the config file";
  125. break;
  126. case LDAPU_ERR_WRONG_ARGS:
  127. rv = "ldaputil API function called with wrong arguments";
  128. break;
  129. case LDAPU_ERR_RENAME_FILE_FAILED:
  130. rv = "Renaming of file failed";
  131. break;
  132. case LDAPU_ERR_MISSING_VERIFYCERT_VAL:
  133. rv = "VerifyCert property value must be on or off";
  134. break;
  135. case LDAPU_ERR_CANAME_IS_MISSING:
  136. rv = "Cert issuer name is missing";
  137. break;
  138. case LDAPU_ERR_CAPROP_IS_MISSING:
  139. rv = "property name is missing";
  140. break;
  141. case LDAPU_ERR_UNKNOWN_CERT_ATTR:
  142. rv = "unknown cert attribute";
  143. break;
  144. case LDAPU_ERR_EMPTY_LDAP_RESULT:
  145. rv = "ldap search returned empty result";
  146. break;
  147. case LDAPU_ERR_MULTIPLE_MATCHES:
  148. rv = "ldap search returned multiple matches when one expected";
  149. break;
  150. case LDAPU_ERR_MISSING_RES_ENTRY:
  151. rv = "Could not extract entry from the ldap search result";
  152. break;
  153. case LDAPU_ERR_MISSING_UID_ATTR:
  154. rv = "ldap entry is missing the 'uid' attribute value";
  155. break;
  156. case LDAPU_ERR_INVALID_ARGUMENT:
  157. rv = "invalid argument passed to the certmap API function";
  158. break;
  159. case LDAPU_ERR_INVALID_SUFFIX:
  160. rv = "invalid LDAP directory suffix";
  161. break;
  162. /* Error codes returned by cert.c */
  163. case LDAPU_ERR_EXTRACT_SUBJECTDN_FAILED:
  164. rv = "Couldn't extract the subject DN from the certificate";
  165. break;
  166. case LDAPU_ERR_EXTRACT_ISSUERDN_FAILED:
  167. rv = "Couldn't extract the issuer DN from the certificate";
  168. break;
  169. case LDAPU_ERR_EXTRACT_DERCERT_FAILED:
  170. rv = "Couldn't extract the original DER encoding from the certificate";
  171. break;
  172. case LDAPU_ERR_NOT_IMPLEMENTED:
  173. rv = "function not implemented yet";
  174. break;
  175. case LDAPU_ERR_INTERNAL:
  176. rv = "ldaputil internal error";
  177. break;
  178. default:
  179. if (err > 0) {
  180. /* LDAP errors are +ve */
  181. rv = ldap_err2string(err);
  182. } else {
  183. rv = "internal error - unknown error code";
  184. }
  185. break;
  186. }
  187. return rv;
  188. }