util_errors.c revision d4757440418c7b73bbecec7e40baf6dfe8cc9460
8bcabb97d988d1602882a1f036aac2eaf5e09234Simo Sorce/*
8bcabb97d988d1602882a1f036aac2eaf5e09234Simo Sorce Copyright (C) 2012 Red Hat
8bcabb97d988d1602882a1f036aac2eaf5e09234Simo Sorce
8bcabb97d988d1602882a1f036aac2eaf5e09234Simo Sorce This program is free software; you can redistribute it and/or modify
8bcabb97d988d1602882a1f036aac2eaf5e09234Simo Sorce it under the terms of the GNU General Public License as published by
8bcabb97d988d1602882a1f036aac2eaf5e09234Simo Sorce the Free Software Foundation; either version 3 of the License, or
8bcabb97d988d1602882a1f036aac2eaf5e09234Simo Sorce (at your option) any later version.
8bcabb97d988d1602882a1f036aac2eaf5e09234Simo Sorce
8bcabb97d988d1602882a1f036aac2eaf5e09234Simo Sorce This program is distributed in the hope that it will be useful,
8bcabb97d988d1602882a1f036aac2eaf5e09234Simo Sorce but WITHOUT ANY WARRANTY; without even the implied warranty of
8bcabb97d988d1602882a1f036aac2eaf5e09234Simo Sorce MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8bcabb97d988d1602882a1f036aac2eaf5e09234Simo Sorce GNU General Public License for more details.
8bcabb97d988d1602882a1f036aac2eaf5e09234Simo Sorce
8bcabb97d988d1602882a1f036aac2eaf5e09234Simo Sorce You should have received a copy of the GNU General Public License
8bcabb97d988d1602882a1f036aac2eaf5e09234Simo Sorce along with this program. If not, see <http://www.gnu.org/licenses/>.
8bcabb97d988d1602882a1f036aac2eaf5e09234Simo Sorce
8bcabb97d988d1602882a1f036aac2eaf5e09234Simo Sorce Authors:
8bcabb97d988d1602882a1f036aac2eaf5e09234Simo Sorce Simo Sorce <ssorce@redhat.com>
8bcabb97d988d1602882a1f036aac2eaf5e09234Simo Sorce*/
8bcabb97d988d1602882a1f036aac2eaf5e09234Simo Sorce
8bcabb97d988d1602882a1f036aac2eaf5e09234Simo Sorce#include "util/util.h"
8bcabb97d988d1602882a1f036aac2eaf5e09234Simo Sorce
8bcabb97d988d1602882a1f036aac2eaf5e09234Simo Sorcestruct err_string {
8bcabb97d988d1602882a1f036aac2eaf5e09234Simo Sorce const char *msg;
8bcabb97d988d1602882a1f036aac2eaf5e09234Simo Sorce};
8bcabb97d988d1602882a1f036aac2eaf5e09234Simo Sorce
8bcabb97d988d1602882a1f036aac2eaf5e09234Simo Sorcestruct err_string error_to_str[] = {
8bcabb97d988d1602882a1f036aac2eaf5e09234Simo Sorce { "Invalid Error" }, /* ERR_INVALID */
8bcabb97d988d1602882a1f036aac2eaf5e09234Simo Sorce { "Internal Error" }, /* ERR_INTERNAL */
edaadf8de0c86a2cfff2d29215775d42919476f3Pavel Březina { "SSSD is running" }, /* ERR_SSSD_RUNNING */
edaadf8de0c86a2cfff2d29215775d42919476f3Pavel Březina { "SSSD is not running" }, /* ERR_SSSD_NOT_RUNNING */
4ebab24f65b54720a6672898b76185462015ababPavel Březina { "SSSD is offline" }, /* ERR_OFFLINE */
75d66aea7accc842e68c88f085f9053112b20eccPavel Březina { "Terminated" }, /* ERR_TERMINATED */
c1058e96679c7ed1372825bf5226ce7d28a8e6ffPavel Březina { "Invalid data type" }, /* ERR_INVALID_DATA_TYPE */
dee7a89098b698e756f63e4041734d7322ad8b1ePavel Březina { "DP target is not configured" }, /* ERR_MISSING_DP_TARGET */
ab967283b710dfa05d11ee5b30c7ac916486ceecSimo Sorce { "Account Unknown" }, /* ERR_ACCOUNT_UNKNOWN */
c6872e79e8496fd075e20aec0343ade99cca725cSimo Sorce { "Invalid credential type" }, /* ERR_INVALID_CRED_TYPE */
c6872e79e8496fd075e20aec0343ade99cca725cSimo Sorce { "No credentials available" }, /* ERR_NO_CREDS */
c6872e79e8496fd075e20aec0343ade99cca725cSimo Sorce { "Credentials are expired" }, /* ERR_CREDS_EXPIRED */
2745b0156f12df7a7eb93d57716233243658e4d9Jakub Hrozek { "Credentials are expired, old ccache was removed" }, /* ERR_CREDS_EXPIRED_CCACHE */
22a21e910fd216ec1468fe769dcc29f1621a52a4Ondrej Kos { "Failure setting user credentials"}, /* ERR_CREDS_INVALID */
ab967283b710dfa05d11ee5b30c7ac916486ceecSimo Sorce { "No cached credentials available" }, /* ERR_NO_CACHED_CREDS */
ab967283b710dfa05d11ee5b30c7ac916486ceecSimo Sorce { "Cached credentials are expired" }, /* ERR_CACHED_CREDS_EXPIRED */
ab967283b710dfa05d11ee5b30c7ac916486ceecSimo Sorce { "Authentication Denied" }, /* ERR_AUTH_DENIED */
c6872e79e8496fd075e20aec0343ade99cca725cSimo Sorce { "Authentication Failed" }, /* ERR_AUTH_FAILED */
233a3c6c48972b177e60d6ef4cecfacd3cf31659Simo Sorce { "Password Change Denied" }, /* ERR_CHPASS_DENIED */
c6872e79e8496fd075e20aec0343ade99cca725cSimo Sorce { "Password Change Failed" }, /* ERR_CHPASS_FAILED */
c6872e79e8496fd075e20aec0343ade99cca725cSimo Sorce { "Network I/O Error" }, /* ERR_NETWORK_IO */
233a3c6c48972b177e60d6ef4cecfacd3cf31659Simo Sorce { "Account Expired" }, /* ERR_ACCOUNT_EXPIRED */
233a3c6c48972b177e60d6ef4cecfacd3cf31659Simo Sorce { "Password Expired" }, /* ERR_PASSWORD_EXPIRED */
7c69221077c780e62f6c536e78675f2dc1c131bcMichal Zidek { "Password Expired (reject access)" }, /* ERR_PASSWORD_EXPIRED_REJECT */
7c69221077c780e62f6c536e78675f2dc1c131bcMichal Zidek { "Password Expired (warn user)" }, /* ERR_PASSWORD_EXPIRED_WARN */
7c69221077c780e62f6c536e78675f2dc1c131bcMichal Zidek { "Password Expired (ask for new password)" }, /* ERR_PASSWORD_EXPIRED_RENEW */
aa7202c8ae677becd6c91d6a27a607fe0f3995eePavel Březina { "Host Access Denied" }, /* ERR_ACCESS_DENIED */
f9961e5f82e0ef474d6492371bfdf9e74e208a99Pavel Březina { "SRV record not found" }, /* ERR_SRV_NOT_FOUND */
f9961e5f82e0ef474d6492371bfdf9e74e208a99Pavel Březina { "SRV lookup error" }, /* ERR_SRV_LOOKUP_ERROR */
7a4e3e29196e3abc1746714fcf93624edae89f93Lukas Slebodnik { "SRV lookup did not return any new server" }, /* ERR_SRV_DUPLICATES */
9cb46bc62f22e0104f1b41a423b014c281ef5fc2Jakub Hrozek { "Dynamic DNS update failed" }, /* ERR_DYNDNS_FAILED */
9cb46bc62f22e0104f1b41a423b014c281ef5fc2Jakub Hrozek { "Dynamic DNS update timed out" }, /* ERR_DYNDNS_TIMEOUT */
9cb46bc62f22e0104f1b41a423b014c281ef5fc2Jakub Hrozek { "Dynamic DNS update not possible while offline" }, /* ERR_DYNDNS_OFFLINE */
7caf7ed4f2eae1ec1c0717b4ee6ce78bdacd5926Jakub Hrozek { "Cannot parse input" }, /* ERR_INPUT_PARSE */
dcc6877aa2e2dd63a9dc9c411a9c58feaeb36b9aStephen Gallagher { "Entry not found" }, /* ERR_NOT_FOUND */
bc30ce9b7d588a17e58012e699986f0d6898b791Pavel Březina { "Domain not found" }, /* ERR_DOMAIN_NOT_FOUND */
b5ee224324b0158641d9b110f81d2bc6eddddc13Pavel Reichl { "Missing configuration file" }, /* ERR_MISSING_CONF */
2a96981a0ac781d01e5bba473409ed2bdf4cd4e0Jakub Hrozek { "Malformed search filter" }, /* ERR_INVALID_FILTER, */
e81deec535d11912b87954c81a1edd768c1386c9Jakub Hrozek { "No POSIX attributes detected" }, /* ERR_NO_POSIX */
4dd38025efda88f123eac672f87d3cda12f050c8Jakub Hrozek { "Extra attribute is a duplicate" }, /* ERR_DUP_EXTRA_ATTR */
4dd38025efda88f123eac672f87d3cda12f050c8Jakub Hrozek { "Malformed extra attribute" }, /* ERR_INVALID_EXTRA_ATTR */
0161a3c5637a0c0092bf54c436bb3d6508d7df26Jakub Hrozek { "Cannot get bus message sender" }, /* ERR_SBUS_GET_SENDER_ERROR */
0161a3c5637a0c0092bf54c436bb3d6508d7df26Jakub Hrozek { "Bus message has no sender" }, /* ERR_SBUS_NO_SENDER */
7a4e3e29196e3abc1746714fcf93624edae89f93Lukas Slebodnik { "Invalid SBUS path provided" }, /* ERR_SBUS_INVALID_PATH */
60cab26b12df9a2153823972cde0c38ca86e01b9Yassir Elley { "User/Group SIDs not found" }, /* ERR_NO_SIDS */
1319e71fd1680ca4864afe0b1aca2b8c8e4a1ee4Stef Walter { "Bus method not supported" }, /* ERR_SBUS_NOSUP */
0c1d65998907930678da2d091789446f2c344d5dJakub Hrozek { "Cannot connect to system bus" }, /* ERR_NO_SYSBUS */
a2ea3f5d9ef9f17efbb61e942c2bc6cff7d1ebf2Jakub Hrozek { "LDAP search returned a referral" }, /* ERR_REFERRAL */
f3a25949de81f80c136bb073e4a8f504b080c20cJakub Hrozek { "Error setting SELinux user context" }, /* ERR_SELINUX_CONTEXT */
8394eddba54b5d3e3fda868145e3751247bdbdb2Michal Zidek { "Username format not allowed by re_expression" }, /* ERR_REGEX_NOMATCH */
5a5c5cdeb92f4012fc75fd717bfea06598f68f12Pavel Reichl { "Time specification not supported" }, /* ERR_TIMESPEC_NOT_SUPPORTED */
7a4e3e29196e3abc1746714fcf93624edae89f93Lukas Slebodnik { "Invalid SSSD configuration detected" }, /* ERR_INVALID_CONFIG */
1243e093fd31c5660adf1bb3dd477d6935a755beJakub Hrozek { "Malformed cache entry" }, /* ERR_MALFORMED_ENTRY */
1243e093fd31c5660adf1bb3dd477d6935a755beJakub Hrozek { "Unexpected cache entry type" }, /* ERR_UNEXPECTED_ENTRY_TYPE */
7a4e3e29196e3abc1746714fcf93624edae89f93Lukas Slebodnik { "Failed to resolve one of user groups" }, /* ERR_SIMPLE_GROUPS_MISSING */
979e8d8d6ed444007eeff6be5269e8dc5d2bdf68Pavel Reichl { "Home directory is NULL" }, /* ERR_HOMEDIR_IS_NULL */
05d935cc9d04f03522d0bb44598d22d99b085926Jakub Hrozek { "Unsupported trust direction" }, /* ERR_TRUST_NOT_SUPPORTED */
64ea4127f463798410a2c20e0261c6b15f60257fJakub Hrozek { "Retrieving keytab failed" }, /* ERR_IPA_GETKEYTAB_FAILED */
64ea4127f463798410a2c20e0261c6b15f60257fJakub Hrozek { "Trusted forest root unknown" }, /* ERR_TRUST_FOREST_UNKNOWN */
a8d887323f83984679a7d9b827a70146656bb7b2Sumit Bose { "p11_child failed" }, /* ERR_P11_CHILD */
b42bf6c0c01db08208fb81d8295a2909d307284aPavel Reichl { "Address family not supported" }, /* ERR_ADDR_FAMILY_NOT_SUPPORTED */
9118a539a5d59f669f551114f880fe91d6bb8741Jakub Hrozek { "Message sender is the bus" }, /* ERR_SBUS_SENDER_BUS */
b5825c74b6bf7a99ae2172392dbecb51179013a6Jakub Hrozek { "Subdomain is inactive" }, /* ERR_SUBDOM_INACTIVE */
19e44537c28f6d5f011cd7ac885c74c1e892605fSimo Sorce { "Account is locked" }, /* ERR_ACCOUNT_LOCKED */
5f7cd30c865046a7ea69944f7e07c85b4c43465aSumit Bose { "AD renewal child failed" }, /* ERR_RENEWAL_CHILD */
c30b7a1931211fdcae0564551a7625cc4f6dee9fJakub Hrozek { "SBUS request already handled" }, /* ERR_SBUS_REQUEST_HANDLED */
e732d23f3ec986a463d757781a334040e03d1f59Jakub Hrozek { "Sysdb version is too old" }, /* ERR_SYSDB_VERSION_TOO_OLD */
e732d23f3ec986a463d757781a334040e03d1f59Jakub Hrozek { "Sysdb version is too new" }, /* ERR_SYSDB_VERSION_TOO_NEW */
dd285415d7a8d8376207960cfa3e977524c3b98cJakub Hrozek { "Domain has to timestamp cache" }, /* ERR_NO_TS */
dd285415d7a8d8376207960cfa3e977524c3b98cJakub Hrozek { "No timestamp cache record" }, /* ERR_TS_CACHE_MISS */
beec1ee5799570f34a51ea57674c7291c15f7022Jakub Hrozek { "Dereference threshold reached" }, /* ERR_DEREF_THRESHOLD */
fcbcfa69f9291936f01f24b5fcb5a7672dca46f3Jakub Hrozek { "The user is not handled by SSSD" }, /* ERR_NON_SSSD_USER */
4714118890e51b365fbce543d0a042b4b59b2b25Michal Zidek { "The internal name format cannot be parsed" }, /* ERR_WRONG_NAME_FORMAT */
efc65e78fa4e01e6cecc8690a9899af61213be62Fabiano Fidêncio { "The maximum level of nested containers has been reached" }, /* ERR_SEC_INVALID_CONTAINERS_NEST_LEVEL */
41cd6072648bb7a9e14e56ed38004a2947f67657Jakub Hrozek { "No proxy server for secrets available"}, /* ERR_SEC_NO_PROXY */
65a38b8c9cabde6c46cc0e9868f54cb9bb10afbfFabiano Fidêncio { "The maximum number of stored secrets has been reached" }, /* ERR_SEC_INVALID_TOO_MANY_SECRETS */
7171a7584dda534dde5409f3e7f4657e845ece15Fabiano Fidêncio { "The secret payload size is too large" }, /* ERR_SEC_PAYLOAD_SIZE_IS_TOO_LARGE */
d4757440418c7b73bbecec7e40baf6dfe8cc9460Sumit Bose { "No authentication methode available" }, /* ERR_NO_AUTH_METHOD_AVAILABLE */
d4757440418c7b73bbecec7e40baf6dfe8cc9460Sumit Bose { "Smartcard authentication not supported" }, /* ERR_SC_AUTH_NOT_SUPPORTED */
7650ded4ffa87fcf7ce5adf00920fecf89cffcf5Michal Zidek { "ERR_LAST" } /* ERR_LAST */
8bcabb97d988d1602882a1f036aac2eaf5e09234Simo Sorce};
8bcabb97d988d1602882a1f036aac2eaf5e09234Simo Sorce
8bcabb97d988d1602882a1f036aac2eaf5e09234Simo Sorce
8bcabb97d988d1602882a1f036aac2eaf5e09234Simo Sorceconst char *sss_strerror(errno_t error)
8bcabb97d988d1602882a1f036aac2eaf5e09234Simo Sorce{
8bcabb97d988d1602882a1f036aac2eaf5e09234Simo Sorce if (IS_SSSD_ERROR(error)) {
8bcabb97d988d1602882a1f036aac2eaf5e09234Simo Sorce return error_to_str[SSSD_ERR_IDX(error)].msg;
8bcabb97d988d1602882a1f036aac2eaf5e09234Simo Sorce }
8bcabb97d988d1602882a1f036aac2eaf5e09234Simo Sorce
8bcabb97d988d1602882a1f036aac2eaf5e09234Simo Sorce return strerror(error);
8bcabb97d988d1602882a1f036aac2eaf5e09234Simo Sorce}
8bcabb97d988d1602882a1f036aac2eaf5e09234Simo Sorce