From 359d341a35142dd39d4182fd31ae7d4fee51e5c6 Mon Sep 17 00:00:00 2001 From: Stephen Gallagher Date: Thu, 24 May 2012 08:23:25 -0400 Subject: [PATCH] Fix several regressions since 1.5.x - Ensure that the RPM creates the /var/lib/sss/mc directory - Add support for Netscape password warning expiration control - Rebuild against libldb 1.1.6 --- ...rberos-credential-cache-default-loca.patch | 3 +- ...l-NULL-dereference-in-proxy-provider.patch | 25 + 0003-Fix-typos-in-message-and-man-pages.patch | 62 + 0004-Fixed-two-minor-memory-leaks.patch | 43 + ...struct-dom_sid-to-struct-sss_dom_sid.patch | 296 ++ 0006-Fix-libsss_hbac-library-version.patch | 25 + ...er-to-body-after-body-is-reallocated.patch | 26 + ...zed_string-correctly-in-FQDN-domains.patch | 34 + ...running-make-rpms-on-RHEL-5-machines.patch | 63 + ...tribute-name-not-LDAP-attribute-name.patch | 39 + ...mory-netgroup-cache-before-the-nowai.patch | 46 + ...ional-arguments-in-translatable-stri.patch | 264 ++ ...ation-of-Netscape-password-warning-e.patch | 204 + ...d-NULL-dereference-with-empty-keytab.patch | 45 + ...yslog-when-dereference-requests-fail.patch | 27 + 0016-Update-translation-sources.patch | 4201 +++++++++++++++++ ...ps-Do-not-process-callback-with-_pos.patch | 58 + 0018-Fixed-issue-in-SELinux-user-maps.patch | 35 + ...-when-mmap-cache-cannot-be-initializ.patch | 35 + sssd.spec | 35 +- 20 files changed, 5562 insertions(+), 4 deletions(-) rename FED01-Change-Kerberos-credential-cache-default-loca.patch => 0001-FEDORA-Change-Kerberos-credential-cache-default-loca.patch (96%) create mode 100644 0002-Potential-NULL-dereference-in-proxy-provider.patch create mode 100644 0003-Fix-typos-in-message-and-man-pages.patch create mode 100644 0004-Fixed-two-minor-memory-leaks.patch create mode 100644 0005-Rename-struct-dom_sid-to-struct-sss_dom_sid.patch create mode 100644 0006-Fix-libsss_hbac-library-version.patch create mode 100644 0007-NSS-keep-a-pointer-to-body-after-body-is-reallocated.patch create mode 100644 0008-Use-sized_string-correctly-in-FQDN-domains.patch create mode 100644 0009-RPM-Allow-running-make-rpms-on-RHEL-5-machines.patch create mode 100644 0010-Use-the-sysdb-attribute-name-not-LDAP-attribute-name.patch create mode 100644 0011-NSS-Expire-in-memory-netgroup-cache-before-the-nowai.patch create mode 100644 0012-Always-use-positional-arguments-in-translatable-stri.patch create mode 100644 0013-Simple-implementation-of-Netscape-password-warning-e.patch create mode 100644 0014-KRB5-Avoid-NULL-dereference-with-empty-keytab.patch create mode 100644 0015-Warn-to-syslog-when-dereference-requests-fail.patch create mode 100644 0016-Update-translation-sources.patch create mode 100644 0017-LDAP-nested-groups-Do-not-process-callback-with-_pos.patch create mode 100644 0018-Fixed-issue-in-SELinux-user-maps.patch create mode 100644 0019-NSS-Fix-segfault-when-mmap-cache-cannot-be-initializ.patch diff --git a/FED01-Change-Kerberos-credential-cache-default-loca.patch b/0001-FEDORA-Change-Kerberos-credential-cache-default-loca.patch similarity index 96% rename from FED01-Change-Kerberos-credential-cache-default-loca.patch rename to 0001-FEDORA-Change-Kerberos-credential-cache-default-loca.patch index 99d9267..5aad9e0 100644 --- a/FED01-Change-Kerberos-credential-cache-default-loca.patch +++ b/0001-FEDORA-Change-Kerberos-credential-cache-default-loca.patch @@ -1,7 +1,8 @@ From 05c49dd916dcbea2ce8f6a6b14fd54a5c67fd6db Mon Sep 17 00:00:00 2001 From: Stephen Gallagher Date: Wed, 22 Feb 2012 07:53:56 -0500 -Subject: [PATCH] FEDORA: Change Kerberos credential cache default location +Subject: [PATCH 01/19] FEDORA: Change Kerberos credential cache default + location On Fedora, we need to default to using /run/user/%u for credential caches for improved security and to simplify rpc.gssd locating the diff --git a/0002-Potential-NULL-dereference-in-proxy-provider.patch b/0002-Potential-NULL-dereference-in-proxy-provider.patch new file mode 100644 index 0000000..b75e224 --- /dev/null +++ b/0002-Potential-NULL-dereference-in-proxy-provider.patch @@ -0,0 +1,25 @@ +From 0b6df55aee996a4b1e8824d1c58c5494b0c5fb0b Mon Sep 17 00:00:00 2001 +From: Ariel Barria +Date: Sat, 12 May 2012 11:00:51 -0500 +Subject: [PATCH 02/19] Potential NULL dereference in proxy provider + +--- + src/providers/proxy/proxy_id.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/providers/proxy/proxy_id.c b/src/providers/proxy/proxy_id.c +index 8a8c7ca80d1b24e53c3d55d06564e719a069642a..e7d9206e5081153ef389dd25db7a32816cc44839 100644 +--- a/src/providers/proxy/proxy_id.c ++++ b/src/providers/proxy/proxy_id.c +@@ -215,7 +215,7 @@ static int save_user(struct sysdb_ctx *sysdb, bool lowercase, + shell = NULL; + } + +- if (!lowercase || alias) { ++ if (lowercase || alias) { + attrs = sysdb_new_attrs(NULL); + if (!attrs) { + DEBUG(SSSDBG_CRIT_FAILURE, ("Allocation error ?!\n")); +-- +1.7.10.1 + diff --git a/0003-Fix-typos-in-message-and-man-pages.patch b/0003-Fix-typos-in-message-and-man-pages.patch new file mode 100644 index 0000000..ced149b --- /dev/null +++ b/0003-Fix-typos-in-message-and-man-pages.patch @@ -0,0 +1,62 @@ +From 47669c95501ee6adbb0700f4d4a62ae09daa21f7 Mon Sep 17 00:00:00 2001 +From: Yuri Chornoivan +Date: Fri, 11 May 2012 23:12:19 +0300 +Subject: [PATCH 03/19] Fix typos in message and man pages. + +--- + src/config/SSSDConfig.py | 2 +- + src/man/include/ldap_id_mapping.xml | 2 +- + src/man/sssd.conf.5.xml | 4 ++-- + 3 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/src/config/SSSDConfig.py b/src/config/SSSDConfig.py +index a44e138f6461681709d78bbece86f6f8720ae31c..11da7cf2ba42076f3088cbbff81b69b39a0dc449 100644 +--- a/src/config/SSSDConfig.py ++++ b/src/config/SSSDConfig.py +@@ -85,7 +85,7 @@ option_strings = { + 'autofs_negative_timeout' : _('Negative cache timeout length (seconds)'), + + # [ssh] +- 'ssh_hash_known_hosts': _('Whether to hash host names and adresses in the known_hosts file'), ++ 'ssh_hash_known_hosts': _('Whether to hash host names and addresses in the known_hosts file'), + + # [provider] + 'id_provider' : _('Identity provider'), +diff --git a/src/man/include/ldap_id_mapping.xml b/src/man/include/ldap_id_mapping.xml +index 62e5598eb0d31fdc1185db13ae0c433b233b9ba2..75335f5032c36c01aa0bcc14d05b60ace0c22734 100644 +--- a/src/man/include/ldap_id_mapping.xml ++++ b/src/man/include/ldap_id_mapping.xml +@@ -83,7 +83,7 @@ ldap_schema = ad + + + NOTE: This option is different from +- id_mn in that id_min ++ id_min in that id_min + acts to filter the output of requests to this domain, + whereas this option controls the range of ID + assignment. This is a subtle distinction, but the +diff --git a/src/man/sssd.conf.5.xml b/src/man/sssd.conf.5.xml +index e283480e3a5725a1acee93c95b20d5b504393e4f..8eaeb13ce0e2af97b19b0855d8cc7f5985659214 100644 +--- a/src/man/sssd.conf.5.xml ++++ b/src/man/sssd.conf.5.xml +@@ -521,7 +521,7 @@ + + + The default shell to use if the provider does not +- return one during lookup. This option supercedes ++ return one during lookup. This option supersedes + any other shell options if it takes effect. + + +@@ -786,7 +786,7 @@ + ssh_hash_known_hosts (bool) + + +- Whether or not to hash host names and adresses in ++ Whether or not to hash host names and addresses in + the managed known_hosts file. + + +-- +1.7.10.1 + diff --git a/0004-Fixed-two-minor-memory-leaks.patch b/0004-Fixed-two-minor-memory-leaks.patch new file mode 100644 index 0000000..17ecd1a --- /dev/null +++ b/0004-Fixed-two-minor-memory-leaks.patch @@ -0,0 +1,43 @@ +From ac102092fe08183f916e6115fb6fef0f0a792126 Mon Sep 17 00:00:00 2001 +From: Jan Zeleny +Date: Mon, 14 May 2012 04:11:32 -0400 +Subject: [PATCH 04/19] Fixed two minor memory leaks + +--- + src/providers/ldap/sdap.c | 5 ++++- + src/providers/ldap/sdap_range.c | 3 ++- + 2 files changed, 6 insertions(+), 2 deletions(-) + +diff --git a/src/providers/ldap/sdap.c b/src/providers/ldap/sdap.c +index 1bb513ae639c37c64cd0064066f7c69552404671..01ba418a6e50808552845f6e91db448c57adbb83 100644 +--- a/src/providers/ldap/sdap.c ++++ b/src/providers/ldap/sdap.c +@@ -123,7 +123,10 @@ int sdap_parse_entry(TALLOC_CTX *memctx, + } + + attrs = sysdb_new_attrs(tmp_ctx); +- if (!attrs) return ENOMEM; ++ if (!attrs) { ++ ret = ENOMEM; ++ goto done; ++ } + + str = ldap_get_dn(sh->ldap, sm->msg); + if (!str) { +diff --git a/src/providers/ldap/sdap_range.c b/src/providers/ldap/sdap_range.c +index 295b6605d15a83b7994bb440e3942f5f620cbeaf..a26443c8244bc58e609b2d9c6b4a2ded71193725 100644 +--- a/src/providers/ldap/sdap_range.c ++++ b/src/providers/ldap/sdap_range.c +@@ -104,7 +104,8 @@ errno_t sdap_parse_range(TALLOC_CTX *mem_ctx, + DEBUG(SSSDBG_TRACE_LIBS, + ("[%s] contained the last set of values for this attribute\n", + attr_desc)); +- return EOK; ++ ret = EOK; ++ goto done; + } + + *range_offset = strtouint32(end_range, &endptr, 10); +-- +1.7.10.1 + diff --git a/0005-Rename-struct-dom_sid-to-struct-sss_dom_sid.patch b/0005-Rename-struct-dom_sid-to-struct-sss_dom_sid.patch new file mode 100644 index 0000000..cc3b873 --- /dev/null +++ b/0005-Rename-struct-dom_sid-to-struct-sss_dom_sid.patch @@ -0,0 +1,296 @@ +From 4e59e4c8f344e93a64d2bb53578c977475d76546 Mon Sep 17 00:00:00 2001 +From: Sumit Bose +Date: Mon, 14 May 2012 13:14:14 +0200 +Subject: [PATCH 05/19] Rename struct dom_sid to struct sss_dom_sid + +To avoid conflicts with struct dom_sid used by samba the sss_ prefix is +added to the struct used by libsss_idmap. +--- + Makefile.am | 2 +- + src/lib/idmap/sss_idmap.c | 6 +++--- + src/lib/idmap/sss_idmap.h | 14 +++++++------- + src/lib/idmap/sss_idmap_conv.c | 26 +++++++++++++------------- + src/tests/sss_idmap-tests.c | 16 ++++++++-------- + 5 files changed, 32 insertions(+), 32 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 5089b8e5c9cd6bddd0ad038423101a0d29e8b18e..2e13a9777a074e628b48bbd23626d019c2e5c617 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -500,7 +500,7 @@ libsss_idmap_la_SOURCES = \ + src/lib/idmap/sss_idmap.c \ + src/lib/idmap/sss_idmap_conv.c + libsss_idmap_la_LDFLAGS = \ +- -version 1:0:1 ++ -version-info 0:1:0 + + + include_HEADERS = \ +diff --git a/src/lib/idmap/sss_idmap.c b/src/lib/idmap/sss_idmap.c +index c970293bccd2385886453afdc2573e2bbbc9c7ad..c589bd458a01ecd9ba298e879e21f746a2ef50e6 100644 +--- a/src/lib/idmap/sss_idmap.c ++++ b/src/lib/idmap/sss_idmap.c +@@ -361,7 +361,7 @@ enum idmap_error_code sss_idmap_unix_to_sid(struct sss_idmap_ctx *ctx, + } + + enum idmap_error_code sss_idmap_dom_sid_to_unix(struct sss_idmap_ctx *ctx, +- struct dom_sid *dom_sid, ++ struct sss_dom_sid *dom_sid, + uint32_t *id) + { + enum idmap_error_code err; +@@ -407,11 +407,11 @@ done: + + enum idmap_error_code sss_idmap_unix_to_dom_sid(struct sss_idmap_ctx *ctx, + uint32_t id, +- struct dom_sid **_dom_sid) ++ struct sss_dom_sid **_dom_sid) + { + enum idmap_error_code err; + char *sid = NULL; +- struct dom_sid *dom_sid = NULL; ++ struct sss_dom_sid *dom_sid = NULL; + + CHECK_IDMAP_CTX(ctx, IDMAP_CONTEXT_INVALID); + +diff --git a/src/lib/idmap/sss_idmap.h b/src/lib/idmap/sss_idmap.h +index 78e786afe680fa276e75148798a590115aec2c1b..a3ec919c8041bb151747cdb8b577dc25f64ad124 100644 +--- a/src/lib/idmap/sss_idmap.h ++++ b/src/lib/idmap/sss_idmap.h +@@ -90,7 +90,7 @@ struct sss_idmap_range { + /** + * Opaque type for SIDs + */ +-struct dom_sid; ++struct sss_dom_sid; + + /** + * Opaque type for the idmap context +@@ -167,7 +167,7 @@ enum idmap_error_code sss_idmap_sid_to_unix(struct sss_idmap_ctx *ctx, + * idmap context + */ + enum idmap_error_code sss_idmap_dom_sid_to_unix(struct sss_idmap_ctx *ctx, +- struct dom_sid *dom_sid, ++ struct sss_dom_sid *dom_sid, + uint32_t *id); + + /** +@@ -220,7 +220,7 @@ enum idmap_error_code sss_idmap_unix_to_sid(struct sss_idmap_ctx *ctx, + */ + enum idmap_error_code sss_idmap_unix_to_dom_sid(struct sss_idmap_ctx *ctx, + uint32_t id, +- struct dom_sid **dom_sid); ++ struct sss_dom_sid **dom_sid); + + /** + * @brief Translate unix UID or GID to a binary SID +@@ -288,7 +288,7 @@ bool is_domain_sid(const char *str); + enum idmap_error_code sss_idmap_bin_sid_to_dom_sid(struct sss_idmap_ctx *ctx, + const uint8_t *bin_sid, + size_t length, +- struct dom_sid **dom_sid); ++ struct sss_dom_sid **dom_sid); + + /** + * @brief Convert binary SID to SID string +@@ -322,7 +322,7 @@ enum idmap_error_code sss_idmap_bin_sid_to_sid(struct sss_idmap_ctx *ctx, + * - #IDMAP_OUT_OF_MEMORY: Failed to allocate memory for the result + */ + enum idmap_error_code sss_idmap_dom_sid_to_bin_sid(struct sss_idmap_ctx *ctx, +- struct dom_sid *dom_sid, ++ struct sss_dom_sid *dom_sid, + uint8_t **bin_sid, + size_t *length); + +@@ -357,7 +357,7 @@ enum idmap_error_code sss_idmap_sid_to_bin_sid(struct sss_idmap_ctx *ctx, + * - #IDMAP_OUT_OF_MEMORY: Failed to allocate memory for the result + */ + enum idmap_error_code sss_idmap_dom_sid_to_sid(struct sss_idmap_ctx *ctx, +- struct dom_sid *dom_sid, ++ struct sss_dom_sid *dom_sid, + char **sid); + + /** +@@ -374,7 +374,7 @@ enum idmap_error_code sss_idmap_dom_sid_to_sid(struct sss_idmap_ctx *ctx, + */ + enum idmap_error_code sss_idmap_sid_to_dom_sid(struct sss_idmap_ctx *ctx, + const char *sid, +- struct dom_sid **dom_sid); ++ struct sss_dom_sid **dom_sid); + /** + * @} + */ +diff --git a/src/lib/idmap/sss_idmap_conv.c b/src/lib/idmap/sss_idmap_conv.c +index e2064f6dabf0c599ff415b9e5655c1d2d3f60dc5..df96fcc327679bedbe19fc2c8d7cc54f692a8161 100644 +--- a/src/lib/idmap/sss_idmap_conv.c ++++ b/src/lib/idmap/sss_idmap_conv.c +@@ -33,7 +33,7 @@ + + #define SID_ID_AUTHS 6 + #define SID_SUB_AUTHS 15 +-struct dom_sid { ++struct sss_dom_sid { + uint8_t sid_rev_num; + int8_t num_auths; /* [range(0,15)] */ + uint8_t id_auth[SID_ID_AUTHS]; /* highest order byte has index 0 */ +@@ -43,19 +43,19 @@ struct dom_sid { + enum idmap_error_code sss_idmap_bin_sid_to_dom_sid(struct sss_idmap_ctx *ctx, + const uint8_t *bin_sid, + size_t length, +- struct dom_sid **_dom_sid) ++ struct sss_dom_sid **_dom_sid) + { + enum idmap_error_code err; +- struct dom_sid *dom_sid; ++ struct sss_dom_sid *dom_sid; + size_t i = 0; + size_t p = 0; + uint32_t val; + + CHECK_IDMAP_CTX(ctx, IDMAP_CONTEXT_INVALID); + +- if (length > sizeof(struct dom_sid)) return IDMAP_SID_INVALID; ++ if (length > sizeof(struct sss_dom_sid)) return IDMAP_SID_INVALID; + +- dom_sid = ctx->alloc_func(sizeof(struct dom_sid), ctx->alloc_pvt); ++ dom_sid = ctx->alloc_func(sizeof(struct sss_dom_sid), ctx->alloc_pvt); + if (dom_sid == NULL) { + return IDMAP_OUT_OF_MEMORY; + } +@@ -101,7 +101,7 @@ done: + } + + enum idmap_error_code sss_idmap_dom_sid_to_bin_sid(struct sss_idmap_ctx *ctx, +- struct dom_sid *dom_sid, ++ struct sss_dom_sid *dom_sid, + uint8_t **_bin_sid, + size_t *_length) + { +@@ -157,7 +157,7 @@ done: + } + + enum idmap_error_code sss_idmap_dom_sid_to_sid(struct sss_idmap_ctx *ctx, +- struct dom_sid *dom_sid, ++ struct sss_dom_sid *dom_sid, + char **_sid) + { + enum idmap_error_code err; +@@ -222,13 +222,13 @@ done: + + enum idmap_error_code sss_idmap_sid_to_dom_sid(struct sss_idmap_ctx *ctx, + const char *sid, +- struct dom_sid **_dom_sid) ++ struct sss_dom_sid **_dom_sid) + { + enum idmap_error_code err; + unsigned long ul; + char *r; + char *end; +- struct dom_sid *dom_sid; ++ struct sss_dom_sid *dom_sid; + + CHECK_IDMAP_CTX(ctx, IDMAP_CONTEXT_INVALID); + +@@ -236,11 +236,11 @@ enum idmap_error_code sss_idmap_sid_to_dom_sid(struct sss_idmap_ctx *ctx, + return IDMAP_SID_INVALID; + } + +- dom_sid = ctx->alloc_func(sizeof(struct dom_sid), ctx->alloc_pvt); ++ dom_sid = ctx->alloc_func(sizeof(struct sss_dom_sid), ctx->alloc_pvt); + if (dom_sid == NULL) { + return IDMAP_OUT_OF_MEMORY; + } +- memset(dom_sid, 0, sizeof(struct dom_sid)); ++ memset(dom_sid, 0, sizeof(struct sss_dom_sid)); + + + if (!isdigit(sid[2])) { +@@ -330,7 +330,7 @@ enum idmap_error_code sss_idmap_sid_to_bin_sid(struct sss_idmap_ctx *ctx, + size_t *_length) + { + enum idmap_error_code err; +- struct dom_sid *dom_sid = NULL; ++ struct sss_dom_sid *dom_sid = NULL; + size_t length; + uint8_t *bin_sid = NULL; + +@@ -363,7 +363,7 @@ enum idmap_error_code sss_idmap_bin_sid_to_sid(struct sss_idmap_ctx *ctx, + char **_sid) + { + enum idmap_error_code err; +- struct dom_sid *dom_sid = NULL; ++ struct sss_dom_sid *dom_sid = NULL; + char *sid = NULL; + + err = sss_idmap_bin_sid_to_dom_sid(ctx, bin_sid, length, &dom_sid); +diff --git a/src/tests/sss_idmap-tests.c b/src/tests/sss_idmap-tests.c +index d81922f1195413674a7a2b5f8429cfe0c2c037c5..b821dfc98b806f71e4d2a11b1fb609711d3e91b7 100644 +--- a/src/tests/sss_idmap-tests.c ++++ b/src/tests/sss_idmap-tests.c +@@ -182,7 +182,7 @@ START_TEST(idmap_test_dom_sid2uid) + { + enum idmap_error_code err; + uint32_t id; +- struct dom_sid *dom_sid = NULL; ++ struct sss_dom_sid *dom_sid = NULL; + + err = sss_idmap_sid_to_dom_sid(idmap_ctx, "S-1-5-21-1-2-3-1000", &dom_sid); + fail_unless(err == IDMAP_SUCCESS, "Failed to convert SID to SID structure"); +@@ -219,7 +219,7 @@ END_TEST + START_TEST(idmap_test_uid2dom_sid) + { + enum idmap_error_code err; +- struct dom_sid *dom_sid = NULL; ++ struct sss_dom_sid *dom_sid = NULL; + char *sid = NULL; + + err = sss_idmap_unix_to_dom_sid(idmap_ctx, 10000, &dom_sid); +@@ -269,7 +269,7 @@ END_TEST + + START_TEST(idmap_test_sid_bin2dom_sid) + { +- struct dom_sid *dom_sid = NULL; ++ struct sss_dom_sid *dom_sid = NULL; + enum idmap_error_code err; + uint8_t *new_bin_sid = NULL; + size_t new_bin_sid_length; +@@ -278,12 +278,12 @@ START_TEST(idmap_test_sid_bin2dom_sid) + test_bin_sid_length, &dom_sid); + + fail_unless(err == IDMAP_SUCCESS, +- "Failed to convert binary SID to struct dom_sid."); ++ "Failed to convert binary SID to struct sss_dom_sid."); + + err = sss_idmap_dom_sid_to_bin_sid(idmap_ctx, dom_sid, &new_bin_sid, + &new_bin_sid_length); + fail_unless(err == IDMAP_SUCCESS, +- "Failed to convert struct dom_sid to binary SID."); ++ "Failed to convert struct sss_dom_sid to binary SID."); + + fail_unless(new_bin_sid_length == test_bin_sid_length, + "Length of binary SIDs do not match."); +@@ -297,18 +297,18 @@ END_TEST + + START_TEST(idmap_test_sid2dom_sid) + { +- struct dom_sid *dom_sid = NULL; ++ struct sss_dom_sid *dom_sid = NULL; + enum idmap_error_code err; + char *new_sid = NULL; + + err = sss_idmap_sid_to_dom_sid(idmap_ctx, "S-1-5-21-1-2-3-1000", &dom_sid); + + fail_unless(err == IDMAP_SUCCESS, +- "Failed to convert SID string to struct dom_sid."); ++ "Failed to convert SID string to struct sss_dom_sid."); + + err = sss_idmap_dom_sid_to_sid(idmap_ctx, dom_sid, &new_sid); + fail_unless(err == IDMAP_SUCCESS, +- "Failed to convert struct dom_sid to SID string."); ++ "Failed to convert struct sss_dom_sid to SID string."); + + fail_unless(new_sid != NULL, "SID string not set"); + fail_unless(strlen("S-1-5-21-1-2-3-1000") == strlen(new_sid), +-- +1.7.10.1 + diff --git a/0006-Fix-libsss_hbac-library-version.patch b/0006-Fix-libsss_hbac-library-version.patch new file mode 100644 index 0000000..651a60f --- /dev/null +++ b/0006-Fix-libsss_hbac-library-version.patch @@ -0,0 +1,25 @@ +From a231d0b597a79b1a9a2617f543b1fef084532c9e Mon Sep 17 00:00:00 2001 +From: Sumit Bose +Date: Mon, 14 May 2012 15:04:38 +0200 +Subject: [PATCH 06/19] Fix libsss_hbac library version + +--- + Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index 2e13a9777a074e628b48bbd23626d019c2e5c617..e238b3538494a254c474518a1c4ea3fae7f975c8 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -492,7 +492,7 @@ libipa_hbac_la_SOURCES = \ + src/providers/ipa/hbac_evaluator.c \ + src/util/sss_utf8.c + libipa_hbac_la_LDFLAGS = \ +- -version 1:0:1 \ ++ -version-info 0:1:0 \ + $(UNICODE_LIBS) + + dist_pkgconfig_DATA += src/lib/idmap/sss_idmap.pc +-- +1.7.10.1 + diff --git a/0007-NSS-keep-a-pointer-to-body-after-body-is-reallocated.patch b/0007-NSS-keep-a-pointer-to-body-after-body-is-reallocated.patch new file mode 100644 index 0000000..efcde7a --- /dev/null +++ b/0007-NSS-keep-a-pointer-to-body-after-body-is-reallocated.patch @@ -0,0 +1,26 @@ +From 33c35e25ba25100dcd77562055eea2a0cb1197a9 Mon Sep 17 00:00:00 2001 +From: Jakub Hrozek +Date: Mon, 14 May 2012 15:53:18 +0200 +Subject: [PATCH 07/19] NSS: keep a pointer to body after body is reallocated + +--- + src/responder/nss/nsssrv_cmd.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/src/responder/nss/nsssrv_cmd.c b/src/responder/nss/nsssrv_cmd.c +index f36a9a322ab92144c93b8cb9041d7a28515cc85d..43e82ae3ad1d98d440c076513ffb78ed46feb949 100644 +--- a/src/responder/nss/nsssrv_cmd.c ++++ b/src/responder/nss/nsssrv_cmd.c +@@ -1919,6 +1919,9 @@ static int fill_grent(struct sss_packet *packet, + num++; + + if (gr_mmap_cache) { ++ /* body was reallocated, so fullname might be pointing to ++ * where body used to be, not where it is */ ++ to_sized_string(&fullname, (const char *)&body[rzero+STRS_ROFFSET]); + ret = sss_mmap_cache_gr_store(nctx->grp_mc_ctx, + &fullname, &pwfield, gid, memnum, + (char *)&body[rzero] + STRS_ROFFSET + +-- +1.7.10.1 + diff --git a/0008-Use-sized_string-correctly-in-FQDN-domains.patch b/0008-Use-sized_string-correctly-in-FQDN-domains.patch new file mode 100644 index 0000000..a8b24db --- /dev/null +++ b/0008-Use-sized_string-correctly-in-FQDN-domains.patch @@ -0,0 +1,34 @@ +From f12d3379b89bb16ec8e85f496f9dbd9fba95d874 Mon Sep 17 00:00:00 2001 +From: Jakub Hrozek +Date: Mon, 14 May 2012 15:58:37 +0200 +Subject: [PATCH 08/19] Use sized_string correctly in FQDN domains + +--- + src/responder/nss/nsssrv_cmd.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/responder/nss/nsssrv_cmd.c b/src/responder/nss/nsssrv_cmd.c +index 43e82ae3ad1d98d440c076513ffb78ed46feb949..aa3ef3cbc0b98d3fe44e14dce212ecf1279f14f3 100644 +--- a/src/responder/nss/nsssrv_cmd.c ++++ b/src/responder/nss/nsssrv_cmd.c +@@ -1863,7 +1863,7 @@ static int fill_grent(struct sss_packet *packet, + if (add_domain) { + ret = snprintf((char *)&body[rzero + rsize], + name.len + delim + dom_len, +- namefmt, name, domain); ++ namefmt, name.str, domain); + if (ret >= (name.len + delim + dom_len)) { + /* need more space, + * got creative with the print format ? */ +@@ -1879,7 +1879,7 @@ static int fill_grent(struct sss_packet *packet, + /* retry */ + ret = snprintf((char *)&body[rzero + rsize], + name.len + delim + dom_len, +- namefmt, name, domain); ++ namefmt, name.str, domain); + } + + if (ret != name.len + delim + dom_len - 1) { +-- +1.7.10.1 + diff --git a/0009-RPM-Allow-running-make-rpms-on-RHEL-5-machines.patch b/0009-RPM-Allow-running-make-rpms-on-RHEL-5-machines.patch new file mode 100644 index 0000000..9ce0146 --- /dev/null +++ b/0009-RPM-Allow-running-make-rpms-on-RHEL-5-machines.patch @@ -0,0 +1,63 @@ +From 6bfc4b41bfa7291eeb54a94c4eac85c7b9357565 Mon Sep 17 00:00:00 2001 +From: Stephen Gallagher +Date: Tue, 15 May 2012 11:38:15 -0400 +Subject: [PATCH 09/19] RPM: Allow running 'make rpms' on RHEL 5 machines + +Our previous detection for this was flawed, because the %{rhel} +macro did not exist on the version of RPM shipped with RHEL 5, but +it worked when building for RHEL 5 through mock. This new patch +relies on grepping /etc/redhat-release for the version +information. + +https://fedorahosted.org/sssd/ticket/1206 +--- + contrib/sssd.spec.in | 12 +++++++----- + 1 file changed, 7 insertions(+), 5 deletions(-) + +diff --git a/contrib/sssd.spec.in b/contrib/sssd.spec.in +index e5a4ed523ef71fe5efbe5e533f0ebb52f0d7f0f9..9972ebbd752d0abbcff35639819f03a97b19327c 100644 +--- a/contrib/sssd.spec.in ++++ b/contrib/sssd.spec.in +@@ -3,8 +3,10 @@ + %{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")} + %endif + +-%if (0%{?rhel} == 5) +-%{!?is_rhel57: %global is_rhel57 %(%{__grep} -c "5\.[^0-6]" /etc/redhat-release)} ++%global is_rhel5 %(%{__grep} -c "release 5" /etc/redhat-release) ++%global rhel5_minor %(%{__grep} -o "5.[0-9]*" /etc/redhat-release |%{__sed} -s 's/5.//') ++ ++%if 0%{?is_rhel5} > 0 + %global with_unicode_lib --with-unicode-lib=glib2 + # we don't want to provide private python extension libs + %{?filter_setup: +@@ -65,7 +67,7 @@ BuildRequires: automake + BuildRequires: libtool + BuildRequires: m4 + %{?fedora:BuildRequires: popt-devel} +-%if 0%{?rhel} <= 5 ++%if 0%{?is_rhel5} > 0 + BuildRequires: popt + %endif + %if 0%{?rhel} >= 6 +@@ -80,7 +82,7 @@ BuildRequires: libcollection-devel + BuildRequires: libini_config-devel + BuildRequires: dbus-devel + BuildRequires: dbus-libs +-%if 0%{?is_rhel57} > 0 ++%if 0%{?rhel5_minor} >= 7 + BuildRequires: openldap24-libs-devel + %else + BuildRequires: openldap-devel +@@ -106,7 +108,7 @@ BuildRequires: gettext-devel + BuildRequires: pkgconfig + BuildRequires: findutils + +-%if 0%{?rhel} == 5 ++%if 0%{?is_rhel5} > 0 + BuildRequires: glib2-devel + %else + BuildRequires: libunistring-devel +-- +1.7.10.1 + diff --git a/0010-Use-the-sysdb-attribute-name-not-LDAP-attribute-name.patch b/0010-Use-the-sysdb-attribute-name-not-LDAP-attribute-name.patch new file mode 100644 index 0000000..c060e92 --- /dev/null +++ b/0010-Use-the-sysdb-attribute-name-not-LDAP-attribute-name.patch @@ -0,0 +1,39 @@ +From 43818e4ba2a9c6fb11344da0b68138f0501f6bfc Mon Sep 17 00:00:00 2001 +From: Jakub Hrozek +Date: Wed, 16 May 2012 17:03:41 +0200 +Subject: [PATCH 10/19] Use the sysdb attribute name, not LDAP attribute name + +--- + src/providers/ldap/sdap_async_autofs.c | 2 +- + src/providers/ldap/sdap_async_groups.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/providers/ldap/sdap_async_autofs.c b/src/providers/ldap/sdap_async_autofs.c +index 3140596efb07e8433f6e044dc2e2c8bba8735886..d8a2d0eec75c3e42cd3dc39930d20a0a51e2c541 100644 +--- a/src/providers/ldap/sdap_async_autofs.c ++++ b/src/providers/ldap/sdap_async_autofs.c +@@ -770,7 +770,7 @@ sdap_autofs_setautomntent_save(struct tevent_req *req) + ret = sysdb_attrs_to_list( + tmp_ctx, state->entries, + state->entries_count, +- state->opts->autofs_entry_map[SDAP_AT_AUTOFS_ENTRY_KEY].name, ++ state->opts->autofs_entry_map[SDAP_AT_AUTOFS_ENTRY_KEY].sys_name, + &ldap_entrylist); + if (ret != EOK) { + DEBUG(SSSDBG_OP_FAILURE, +diff --git a/src/providers/ldap/sdap_async_groups.c b/src/providers/ldap/sdap_async_groups.c +index 361525037eb270462251fe03d0c5e1df63de73f4..b48fe72eca1ab1dfe2dcb7a97a856ecef86d6f33 100644 +--- a/src/providers/ldap/sdap_async_groups.c ++++ b/src/providers/ldap/sdap_async_groups.c +@@ -3044,7 +3044,7 @@ sdap_nested_group_process_deref_result(struct tevent_req *req) + } else if (dctx->deref_result[dctx->result_index]->map == \ + state->opts->group_map) { + ret = sysdb_attrs_get_string(dctx->deref_result[dctx->result_index]->attrs, +- state->opts->group_map[SDAP_AT_GROUP_NAME].name, ++ state->opts->group_map[SDAP_AT_GROUP_NAME].sys_name, + &tmp_name); + if (ret == ENOENT) { + DEBUG(7, ("Dereferenced a group without name, skipping ...\n")); +-- +1.7.10.1 + diff --git a/0011-NSS-Expire-in-memory-netgroup-cache-before-the-nowai.patch b/0011-NSS-Expire-in-memory-netgroup-cache-before-the-nowai.patch new file mode 100644 index 0000000..3d60493 --- /dev/null +++ b/0011-NSS-Expire-in-memory-netgroup-cache-before-the-nowai.patch @@ -0,0 +1,46 @@ +From 977de33c57278fe0d90a3f937c58046298ab8742 Mon Sep 17 00:00:00 2001 +From: Stephen Gallagher +Date: Wed, 16 May 2012 14:32:29 -0400 +Subject: [PATCH 11/19] NSS: Expire in-memory netgroup cache before the nowait + timeout + +The fact that we were keeping it in memory for the full duration +of the cache timeout meant that we would never reap the benefits +of the midpoint cache refresh. + +https://fedorahosted.org/sssd/ticket/1340 +--- + src/responder/nss/nsssrv_netgroup.c | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +diff --git a/src/responder/nss/nsssrv_netgroup.c b/src/responder/nss/nsssrv_netgroup.c +index 83e79a2fae7f957264d452bbc39550cacb792774..593b7e435b1e8e504975d20a2295ce65cb60e7a0 100644 +--- a/src/responder/nss/nsssrv_netgroup.c ++++ b/src/responder/nss/nsssrv_netgroup.c +@@ -416,6 +416,7 @@ static errno_t lookup_netgr_step(struct setent_step_ctx *step_ctx) + struct getent_ctx *netgr; + struct sysdb_ctx *sysdb; + char *name = NULL; ++ uint32_t lifetime; + + /* Check each domain for this netgroup name */ + while (dom) { +@@ -531,7 +532,14 @@ static errno_t lookup_netgr_step(struct setent_step_ctx *step_ctx) + name, dom->name)); + netgr->ready = true; + netgr->found = true; +- set_netgr_lifetime(dom->netgroup_timeout, step_ctx, netgr); ++ if (step_ctx->nctx->cache_refresh_percent) { ++ lifetime = dom->netgroup_timeout * ++ (step_ctx->nctx->cache_refresh_percent / 100); ++ } else { ++ lifetime = dom->netgroup_timeout; ++ } ++ if (lifetime < 10) lifetime = 10; ++ set_netgr_lifetime(lifetime, step_ctx, netgr); + return EOK; + } + +-- +1.7.10.1 + diff --git a/0012-Always-use-positional-arguments-in-translatable-stri.patch b/0012-Always-use-positional-arguments-in-translatable-stri.patch new file mode 100644 index 0000000..118ae1f --- /dev/null +++ b/0012-Always-use-positional-arguments-in-translatable-stri.patch @@ -0,0 +1,264 @@ +From 56f1f51468005df27198c51acc203e2fe00312f8 Mon Sep 17 00:00:00 2001 +From: Stephen Gallagher +Date: Thu, 17 May 2012 13:54:29 -0400 +Subject: [PATCH 12/19] Always use positional arguments in translatable + strings + +https://fedorahosted.org/sssd/ticket/1336 +--- + src/sss_client/pam_sss.c | 4 ++-- + src/tools/sss_cache.c | 10 +++++----- + src/tools/sss_groupdel.c | 2 +- + src/tools/sss_groupmod.c | 4 ++-- + src/tools/sss_groupshow.c | 10 +++++----- + src/tools/sss_useradd.c | 6 +++--- + src/tools/sss_userdel.c | 8 ++++---- + src/tools/sss_usermod.c | 4 ++-- + src/tools/tools_util.h | 2 +- + 9 files changed, 25 insertions(+), 25 deletions(-) + +diff --git a/src/sss_client/pam_sss.c b/src/sss_client/pam_sss.c +index e25792fc012c587e2ffc804057a2b43ec6b90068..9dca7e3c7b2f773abf08d5127d63b0bfc52ed06e 100644 +--- a/src/sss_client/pam_sss.c ++++ b/src/sss_client/pam_sss.c +@@ -637,7 +637,7 @@ static int user_info_grace_login(pam_handle_t *pamh, + memcpy(&grace, buf + sizeof(uint32_t), sizeof(uint32_t)); + ret = snprintf(user_msg, sizeof(user_msg), + _("Your password has expired. " +- "You have %d grace login(s) remaining."), ++ "You have %1$d grace login(s) remaining."), + grace); + if (ret < 0 || ret >= sizeof(user_msg)) { + D(("snprintf failed.")); +@@ -682,7 +682,7 @@ static int user_info_expire_warn(pam_handle_t *pamh, + } + + ret = snprintf(user_msg, sizeof(user_msg), +- _("Your password will expire in %d %s."), expire, unit); ++ _("Your password will expire in %1$d %2$s."), expire, unit); + if (ret < 0 || ret >= sizeof(user_msg)) { + D(("snprintf failed.")); + return PAM_SYSTEM_ERR; +diff --git a/src/tools/sss_cache.c b/src/tools/sss_cache.c +index d0f2b28714140a068ed43d22e0b0bf75feb804e3..1b2b29fe774b58bc15bf51ec0560a681382bc66d 100644 +--- a/src/tools/sss_cache.c ++++ b/src/tools/sss_cache.c +@@ -169,10 +169,10 @@ bool invalidate_entries(TALLOC_CTX *ctx, struct sysdb_ctx *sysdb, + ("Searching for %s with filter %s failed\n", + type_rec.type_string, filter)); + if (name) { +- ERROR("No such %s named %s, skipping\n", ++ ERROR("No such %1$s named %2$s, skipping\n", + type_rec.type_string, name); + } else { +- ERROR("No objects of type %s in the cache, skipping\n", ++ ERROR("No objects of type %1$s in the cache, skipping\n", + type_rec.type_string); + } + return false; +@@ -184,14 +184,14 @@ bool invalidate_entries(TALLOC_CTX *ctx, struct sysdb_ctx *sysdb, + if (c_name == NULL) { + DEBUG(SSSDBG_MINOR_FAILURE, + ("Something bad happened, can't find attribute %s", SYSDB_NAME)); +- ERROR("Couldn't invalidate %s", type_rec.type_string); ++ ERROR("Couldn't invalidate %1$s", type_rec.type_string); + iret = false; + } else { + ret = invalidate_entry(ctx, sysdb, c_name, entry_type); + if (ret != EOK) { + DEBUG(SSSDBG_MINOR_FAILURE, + ("Couldn't invalidate %s %s", type_rec.type_string, c_name)); +- ERROR("Couldn't invalidate %s %s", type_rec.type_string, c_name); ++ ERROR("Couldn't invalidate %1$s %2$s", type_rec.type_string, c_name); + iret = false; + } + } +@@ -452,7 +452,7 @@ errno_t init_context(int argc, const char *argv[], struct cache_tool_ctx **tctx) + ret = init_domains(ctx, domain); + if (ret != EOK) { + if (domain) { +- ERROR("Could not open domain %s\n", domain); ++ ERROR("Could not open domain %1$s\n", domain); + } else { + ERROR("Could not open available domains\n"); + } +diff --git a/src/tools/sss_groupdel.c b/src/tools/sss_groupdel.c +index 09f73504df9039a38879ba16e7d8628741176ec8..70030cab4f38b89cfbb61d896a04903eeac311f0 100644 +--- a/src/tools/sss_groupdel.c ++++ b/src/tools/sss_groupdel.c +@@ -98,7 +98,7 @@ int main(int argc, const char **argv) + + if ((tctx->octx->gid < tctx->local->id_min) || + (tctx->local->id_max && tctx->octx->gid > tctx->local->id_max)) { +- ERROR("Group %s is outside the defined ID range for domain\n", ++ ERROR("Group %1$s is outside the defined ID range for domain\n", + tctx->octx->name); + ret = EXIT_FAILURE; + goto fini; +diff --git a/src/tools/sss_groupmod.c b/src/tools/sss_groupmod.c +index 47134aedf78354aa1107cf30e01fc1fcbe2abc4f..abab4f57f644215e130b787a176bf4b9a72d9e44 100644 +--- a/src/tools/sss_groupmod.c ++++ b/src/tools/sss_groupmod.c +@@ -152,7 +152,7 @@ int main(int argc, const char **argv) + /* Check group names in the LOCAL domain */ + ret = check_group_names(tctx, tctx->octx->addgroups, &badgroup); + if (ret != EOK) { +- ERROR("Cannot find group %s in local domain, " ++ ERROR("Cannot find group %1$s in local domain, " + "only groups in local domain are allowed\n", badgroup); + ret = EXIT_FAILURE; + goto fini; +@@ -179,7 +179,7 @@ int main(int argc, const char **argv) + /* Check group names in the LOCAL domain */ + ret = check_group_names(tctx, tctx->octx->rmgroups, &badgroup); + if (ret != EOK) { +- ERROR("Cannot find group %s in local domain, " ++ ERROR("Cannot find group %1$s in local domain, " + "only groups in local domain are allowed\n", badgroup); + ret = EXIT_FAILURE; + goto fini; +diff --git a/src/tools/sss_groupshow.c b/src/tools/sss_groupshow.c +index 764e32416b046dfc6ff2a47de37627e40b0109f0..0eecd3a9671c1aae5ced8e8fa35f4ab6a3310075 100644 +--- a/src/tools/sss_groupshow.c ++++ b/src/tools/sss_groupshow.c +@@ -559,26 +559,26 @@ static void print_group_info(struct group_info *g, int level) + snprintf(fmt, 8, "%%%ds", level*PADDING_SPACES); + snprintf(padding, 512, fmt, ""); + +- printf(_("%s%sGroup: %s\n"), padding, ++ printf(_("%1$s%2$sGroup: %3$s\n"), padding, + g->mpg ? _("Magic Private ") : "", + g->name); +- printf(_("%sGID number: %d\n"), padding, g->gid); ++ printf(_("%1$sGID number: %2$d\n"), padding, g->gid); + +- printf(_("%sMember users: "), padding); ++ printf(_("%1$sMember users: "), padding); + if (g->user_members) { + for (i=0; g->user_members[i]; ++i) { + printf("%s%s", i>0 ? "," : "", + g->user_members[i]); + } + } +- printf(_("\n%sIs a member of: "), padding); ++ printf(_("\n%1$sIs a member of: "), padding); + if (g->memberofs) { + for (i=0; g->memberofs[i]; ++i) { + printf("%s%s", i>0 ? "," : "", + g->memberofs[i]); + } + } +- printf(_("\n%sMember groups: "), padding); ++ printf(_("\n%1$sMember groups: "), padding); + } + + static void print_recursive(struct group_info **group_members, int level) +diff --git a/src/tools/sss_useradd.c b/src/tools/sss_useradd.c +index 5ca2612a351bb060f172434ace3bce9c7e022a1d..4df7c098e554d4b8c924961305f35492bfba3807 100644 +--- a/src/tools/sss_useradd.c ++++ b/src/tools/sss_useradd.c +@@ -150,7 +150,7 @@ int main(int argc, const char **argv) + /* Check group names in the LOCAL domain */ + ret = check_group_names(tctx, tctx->octx->addgroups, &badgroup); + if (ret != EOK) { +- ERROR("Cannot find group %s in local domain\n", badgroup); ++ ERROR("Cannot find group %1$s in local domain\n", badgroup); + ret = EXIT_FAILURE; + goto fini; + } +@@ -229,7 +229,7 @@ int main(int argc, const char **argv) + ERROR("User's home directory already exists, not copying " + "data from skeldir\n"); + } else if (ret != EOK) { +- ERROR("Cannot create user's home directory: %s\n", strerror(ret)); ++ ERROR("Cannot create user's home directory: %1$s\n", strerror(ret)); + ret = EXIT_FAILURE; + goto fini; + } +@@ -240,7 +240,7 @@ int main(int argc, const char **argv) + tctx->octx->uid, + tctx->octx->gid); + if (ret != EOK) { +- ERROR("Cannot create user's mail spool: %s\n", strerror(ret)); ++ ERROR("Cannot create user's mail spool: %1$s\n", strerror(ret)); + DEBUG(1, ("Cannot create user's mail spool: [%d][%s].\n", + ret, strerror(ret))); + ret = EXIT_FAILURE; +diff --git a/src/tools/sss_userdel.c b/src/tools/sss_userdel.c +index 6d5e8295877afee3106e2a9d978504697f870d46..0d1c63e4ce58544775ae28041c65443ac054ee0d 100644 +--- a/src/tools/sss_userdel.c ++++ b/src/tools/sss_userdel.c +@@ -227,7 +227,7 @@ int main(int argc, const char **argv) + + if ((tctx->octx->uid < tctx->local->id_min) || + (tctx->local->id_max && tctx->octx->uid > tctx->local->id_max)) { +- ERROR("User %s is outside the defined ID range for domain\n", ++ ERROR("User %1$s is outside the defined ID range for domain\n", + tctx->octx->name); + ret = EXIT_FAILURE; + goto fini; +@@ -264,7 +264,7 @@ int main(int argc, const char **argv) + break; + + case EOK: +- ERROR("WARNING: The user (uid %lu) was still logged in when " ++ ERROR("WARNING: The user (uid %1$lu) was still logged in when " + "deleted.\n", (unsigned long) tctx->octx->uid); + break; + +@@ -281,7 +281,7 @@ int main(int argc, const char **argv) + + ret = run_userdel_cmd(tctx); + if (ret != EOK) { +- ERROR("The post-delete command failed: %s\n", strerror(ret)); ++ ERROR("The post-delete command failed: %1$s\n", strerror(ret)); + goto fini; + } + +@@ -295,7 +295,7 @@ int main(int argc, const char **argv) + if (ret == EPERM) { + ERROR("Not removing home dir - not owned by user\n"); + } else if (ret != EOK) { +- ERROR("Cannot remove homedir: %s\n", strerror(ret)); ++ ERROR("Cannot remove homedir: %1$s\n", strerror(ret)); + ret = EXIT_FAILURE; + goto fini; + } +diff --git a/src/tools/sss_usermod.c b/src/tools/sss_usermod.c +index dfcde9e56c632b6ddee0ec5cf375258c713ac360..b761de225de5842624d8f888bb0d7053617eb37d 100644 +--- a/src/tools/sss_usermod.c ++++ b/src/tools/sss_usermod.c +@@ -173,7 +173,7 @@ int main(int argc, const char **argv) + /* Check group names in the LOCAL domain */ + ret = check_group_names(tctx, tctx->octx->addgroups, &badgroup); + if (ret != EOK) { +- ERROR("Cannot find group %s in local domain, " ++ ERROR("Cannot find group %1$s in local domain, " + "only groups in local domain are allowed\n", badgroup); + ret = EXIT_FAILURE; + goto fini; +@@ -200,7 +200,7 @@ int main(int argc, const char **argv) + /* Check group names in the LOCAL domain */ + ret = check_group_names(tctx, tctx->octx->rmgroups, &badgroup); + if (ret != EOK) { +- ERROR("Cannot find group %s in local domain, " ++ ERROR("Cannot find group %1$s in local domain, " + "only groups in local domain are allowed\n", badgroup); + ret = EXIT_FAILURE; + goto fini; +diff --git a/src/tools/tools_util.h b/src/tools/tools_util.h +index fccd9d96bdc293f85d4af2ebcb0756a1fcc940cc..fd26b89056cf16b974102b5163e7ee76608a2d2e 100644 +--- a/src/tools/tools_util.h ++++ b/src/tools/tools_util.h +@@ -37,7 +37,7 @@ + val = getuid(); \ + if (val != 0) { \ + DEBUG(1, ("Running under %d, must be root\n", val)); \ +- ERROR("%s must be run as root\n", prg_name); \ ++ ERROR("%1$s must be run as root\n", prg_name); \ + val = EXIT_FAILURE; \ + goto fini; \ + } \ +-- +1.7.10.1 + diff --git a/0013-Simple-implementation-of-Netscape-password-warning-e.patch b/0013-Simple-implementation-of-Netscape-password-warning-e.patch new file mode 100644 index 0000000..b1b8b3a --- /dev/null +++ b/0013-Simple-implementation-of-Netscape-password-warning-e.patch @@ -0,0 +1,204 @@ +From 0aac71d726bda4af3ba141bed7707512cda7fd9a Mon Sep 17 00:00:00 2001 +From: Joshua Roys +Date: Mon, 14 May 2012 10:23:34 -0400 +Subject: [PATCH 13/19] Simple implementation of Netscape password warning + expiration control + +--- + src/providers/ldap/sdap_async_connection.c | 96 +++++++++++++++++++++------- + src/util/sss_ldap.h | 8 +++ + 2 files changed, 82 insertions(+), 22 deletions(-) + +diff --git a/src/providers/ldap/sdap_async_connection.c b/src/providers/ldap/sdap_async_connection.c +index e933e296b7df20ff8d034c2a11745b5c68b25e65..efd9cd8cc7205e4cb838523b0311ffd50805d590 100644 +--- a/src/providers/ldap/sdap_async_connection.c ++++ b/src/providers/ldap/sdap_async_connection.c +@@ -26,6 +26,7 @@ + #include "util/util.h" + #include "util/sss_krb5.h" + #include "util/sss_ldap.h" ++#include "util/strtonum.h" + #include "providers/ldap/sdap_async_private.h" + #include "providers/ldap/ldap_common.h" + +@@ -541,7 +542,9 @@ static void simple_bind_done(struct sdap_op *op, + struct simple_bind_state *state = tevent_req_data(req, + struct simple_bind_state); + char *errmsg = NULL; +- int ret; ++ char *nval; ++ errno_t ret; ++ int lret; + LDAPControl **response_controls; + int c; + ber_int_t pp_grace; +@@ -555,30 +558,33 @@ static void simple_bind_done(struct sdap_op *op, + + state->reply = talloc_steal(state, reply); + +- ret = ldap_parse_result(state->sh->ldap, state->reply->msg, ++ lret = ldap_parse_result(state->sh->ldap, state->reply->msg, + &state->result, NULL, &errmsg, NULL, + &response_controls, 0); +- if (ret != LDAP_SUCCESS) { +- DEBUG(2, ("ldap_parse_result failed (%d)\n", state->op->msgid)); ++ if (lret != LDAP_SUCCESS) { ++ DEBUG(SSSDBG_MINOR_FAILURE, ++ ("ldap_parse_result failed (%d)\n", state->op->msgid)); + ret = EIO; + goto done; + } + + if (response_controls == NULL) { +- DEBUG(5, ("Server returned no controls.\n")); ++ DEBUG(SSSDBG_TRACE_LIBS, ("Server returned no controls.\n")); + state->ppolicy = NULL; + } else { + for (c = 0; response_controls[c] != NULL; c++) { +- DEBUG(9, ("Server returned control [%s].\n", +- response_controls[c]->ldctl_oid)); ++ DEBUG(SSSDBG_TRACE_INTERNAL, ++ ("Server returned control [%s].\n", ++ response_controls[c]->ldctl_oid)); + if (strcmp(response_controls[c]->ldctl_oid, + LDAP_CONTROL_PASSWORDPOLICYRESPONSE) == 0) { +- ret = ldap_parse_passwordpolicy_control(state->sh->ldap, ++ lret = ldap_parse_passwordpolicy_control(state->sh->ldap, + response_controls[c], + &pp_expire, &pp_grace, + &pp_error); +- if (ret != LDAP_SUCCESS) { +- DEBUG(1, ("ldap_parse_passwordpolicy_control failed.\n")); ++ if (lret != LDAP_SUCCESS) { ++ DEBUG(SSSDBG_MINOR_FAILURE, ++ ("ldap_parse_passwordpolicy_control failed.\n")); + ret = EIO; + goto done; + } +@@ -586,9 +592,10 @@ static void simple_bind_done(struct sdap_op *op, + DEBUG(7, ("Password Policy Response: expire [%d] grace [%d] " + "error [%s].\n", pp_expire, pp_grace, + ldap_passwordpolicy_err2txt(pp_error))); +- state->ppolicy = talloc(state, struct sdap_ppolicy_data); ++ if (!state->ppolicy) ++ state->ppolicy = talloc_zero(state, ++ struct sdap_ppolicy_data); + if (state->ppolicy == NULL) { +- DEBUG(1, ("talloc failed.\n")); + ret = ENOMEM; + goto done; + } +@@ -596,36 +603,81 @@ static void simple_bind_done(struct sdap_op *op, + state->ppolicy->expire = pp_expire; + if (state->result == LDAP_SUCCESS) { + if (pp_error == PP_changeAfterReset) { +- DEBUG(4, ("Password was reset. " +- "User must set a new password.\n")); ++ DEBUG(SSSDBG_TRACE_LIBS, ++ ("Password was reset. " ++ "User must set a new password.\n")); + state->result = LDAP_X_SSSD_PASSWORD_EXPIRED; + } else if (pp_grace > 0) { +- DEBUG(4, ("Password expired. " +- "[%d] grace logins remaining.\n", pp_grace)); ++ DEBUG(SSSDBG_TRACE_LIBS, ++ ("Password expired. " ++ "[%d] grace logins remaining.\n", ++ pp_grace)); + } else if (pp_expire > 0) { +- DEBUG(4, ("Password will expire in [%d] seconds.\n", +- pp_expire)); ++ DEBUG(SSSDBG_TRACE_LIBS, ++ ("Password will expire in [%d] seconds.\n", ++ pp_expire)); + } + } else if (state->result == LDAP_INVALID_CREDENTIALS && + pp_error == PP_passwordExpired) { +- DEBUG(4, ++ DEBUG(SSSDBG_TRACE_LIBS, + ("Password expired user must set a new password.\n")); + state->result = LDAP_X_SSSD_PASSWORD_EXPIRED; + } ++ } else if (strcmp(response_controls[c]->ldctl_oid, ++ LDAP_CONTROL_PWEXPIRED) == 0) { ++ DEBUG(SSSDBG_TRACE_LIBS, ++ ("Password expired user must set a new password.\n")); ++ state->result = LDAP_X_SSSD_PASSWORD_EXPIRED; ++ } else if (strcmp(response_controls[c]->ldctl_oid, ++ LDAP_CONTROL_PWEXPIRING) == 0) { ++ /* ignore controls with suspiciously long values */ ++ if (response_controls[c]->ldctl_value.bv_len > 32) { ++ continue; ++ } ++ ++ if (!state->ppolicy) { ++ state->ppolicy = talloc(state, struct sdap_ppolicy_data); ++ } ++ ++ if (state->ppolicy == NULL) { ++ ret = ENOMEM; ++ goto done; ++ } ++ /* ensure that bv_val is a null-terminated string */ ++ nval = talloc_strndup(NULL, ++ response_controls[c]->ldctl_value.bv_val, ++ response_controls[c]->ldctl_value.bv_len); ++ if (nval == NULL) { ++ ret = ENOMEM; ++ goto done; ++ } ++ state->ppolicy->expire = strtouint32(nval, NULL, 10); ++ ret = errno; ++ talloc_zfree(nval); ++ if (ret != EOK) { ++ DEBUG(SSSDBG_MINOR_FAILURE, ++ ("Could not convert control response to an integer. ", ++ "[%s]\n", strerror(ret))); ++ goto done; ++ } ++ ++ DEBUG(SSSDBG_TRACE_LIBS, ++ ("Password will expire in [%d] seconds.\n", ++ state->ppolicy->expire)); + } + } + } + +- DEBUG(3, ("Bind result: %s(%d), %s\n", ++ DEBUG(SSSDBG_TRACE_FUNC, ("Bind result: %s(%d), %s\n", + sss_ldap_err2string(state->result), state->result, + errmsg ? errmsg : "no errmsg set")); + +- ret = LDAP_SUCCESS; ++ ret = EOK; + done: + ldap_controls_free(response_controls); + ldap_memfree(errmsg); + +- if (ret == LDAP_SUCCESS) { ++ if (ret == EOK) { + tevent_req_done(req); + } else { + tevent_req_error(req, ret); +diff --git a/src/util/sss_ldap.h b/src/util/sss_ldap.h +index 8a69b832965bf5ad23986a9b64cb5252cc3b1999..46829259aedcf4a4f2ba3f94fc059c343c0e9ba6 100644 +--- a/src/util/sss_ldap.h ++++ b/src/util/sss_ldap.h +@@ -29,6 +29,14 @@ + + #define LDAP_X_SSSD_PASSWORD_EXPIRED 0x555D + ++#ifndef LDAP_CONTROL_PWEXPIRED ++#define LDAP_CONTROL_PWEXPIRED "2.16.840.1.113730.3.4.4" ++#endif ++ ++#ifndef LDAP_CONTROL_PWEXPIRING ++#define LDAP_CONTROL_PWEXPIRING "2.16.840.1.113730.3.4.5" ++#endif ++ + #ifdef LDAP_OPT_DIAGNOSTIC_MESSAGE + #define SDAP_DIAGNOSTIC_MESSAGE LDAP_OPT_DIAGNOSTIC_MESSAGE + #else +-- +1.7.10.1 + diff --git a/0014-KRB5-Avoid-NULL-dereference-with-empty-keytab.patch b/0014-KRB5-Avoid-NULL-dereference-with-empty-keytab.patch new file mode 100644 index 0000000..d3d9193 --- /dev/null +++ b/0014-KRB5-Avoid-NULL-dereference-with-empty-keytab.patch @@ -0,0 +1,45 @@ +From 0549c49a94c24672657748303fff1d33128c1c74 Mon Sep 17 00:00:00 2001 +From: Stephen Gallagher +Date: Mon, 21 May 2012 20:36:44 -0400 +Subject: [PATCH 14/19] KRB5: Avoid NULL-dereference with empty keytab + +https://fedorahosted.org/sssd/ticket/1330 +--- + src/util/sss_krb5.c | 20 +++++++++++++------- + 1 file changed, 13 insertions(+), 7 deletions(-) + +diff --git a/src/util/sss_krb5.c b/src/util/sss_krb5.c +index 988531995aba7fd7a2a1d801fabde19fa537e26b..81a1623ef9df340d7618bdf55c1707ce4cfb1a6a 100644 +--- a/src/util/sss_krb5.c ++++ b/src/util/sss_krb5.c +@@ -1104,14 +1104,20 @@ sss_krb5_read_etypes_for_keytab(TALLOC_CTX *mem_ctx, + } + + if (ret == 0) { +- /* Sort the preferred enctypes first */ +- qsort(etypes, count, sizeof(*etypes), compare_etypes); +- etypes = talloc_realloc(tmp_ctx, etypes, krb5_enctype, count); +- if (etypes == NULL) { +- ret = ENOMEM; ++ if (etypes) { ++ /* Sort the preferred enctypes first */ ++ qsort(etypes, count, sizeof(*etypes), compare_etypes); ++ etypes = talloc_realloc(tmp_ctx, etypes, krb5_enctype, count); ++ if (etypes == NULL) { ++ ret = ENOMEM; ++ } else { ++ *etype_list = talloc_steal(mem_ctx, etypes); ++ *n_etype_list = count; ++ } + } else { +- *etype_list = talloc_steal(mem_ctx, etypes); +- *n_etype_list = count; ++ /* The key table was empty. There are no enctypes to match */ ++ *etype_list = NULL; ++ *n_etype_list = 0; + } + } + +-- +1.7.10.1 + diff --git a/0015-Warn-to-syslog-when-dereference-requests-fail.patch b/0015-Warn-to-syslog-when-dereference-requests-fail.patch new file mode 100644 index 0000000..e5b0a40 --- /dev/null +++ b/0015-Warn-to-syslog-when-dereference-requests-fail.patch @@ -0,0 +1,27 @@ +From e52a31484c88d46e381238493384f26d9c95f8ff Mon Sep 17 00:00:00 2001 +From: Ariel Barria +Date: Tue, 22 May 2012 07:13:21 -0500 +Subject: [PATCH 15/19] Warn to syslog when dereference requests fail + +--- + src/providers/ldap/sdap_async.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/providers/ldap/sdap_async.c b/src/providers/ldap/sdap_async.c +index a8a12c3d390a4ebee0dca81d6610be9fe240a4a6..14a27bcba2385fef5980a5a933cb7e7a9742a231 100644 +--- a/src/providers/ldap/sdap_async.c ++++ b/src/providers/ldap/sdap_async.c +@@ -2051,8 +2051,8 @@ static void sdap_deref_search_done(struct tevent_req *subreq) + + talloc_zfree(subreq); + if (ret != EOK) { +- DEBUG(2, ("dereference processing failed [%d]: %s\n", +- ret, strerror(ret))); ++ DEBUG(2, ("dereference processing failed [%d]: %s\n", ret, strerror(ret))); ++ sss_log(SSS_LOG_WARNING, "dereference processing failed : %s", strerror(ret)); + tevent_req_error(req, ret); + return; + } +-- +1.7.10.1 + diff --git a/0016-Update-translation-sources.patch b/0016-Update-translation-sources.patch new file mode 100644 index 0000000..574fdb1 --- /dev/null +++ b/0016-Update-translation-sources.patch @@ -0,0 +1,4201 @@ +From fcd4d3ed036573128d83e447ef4dac3b370f232c Mon Sep 17 00:00:00 2001 +From: Stephen Gallagher +Date: Tue, 22 May 2012 09:34:31 -0400 +Subject: [PATCH 16/19] Update translation sources + +--- + po/de.po | 48 +++++++++++++------------- + po/es.po | 82 +++++++++++++++++++++---------------------- + po/fr.po | 86 +++++++++++++++++++++++----------------------- + po/hu.po | 64 +++++++++++++++++----------------- + po/id.po | 64 +++++++++++++++++----------------- + po/it.po | 78 ++++++++++++++++++++--------------------- + po/ja.po | 86 +++++++++++++++++++++++----------------------- + po/nb.po | 48 +++++++++++++------------- + po/nl.po | 82 +++++++++++++++++++++---------------------- + po/pl.po | 86 +++++++++++++++++++++++----------------------- + po/pt.po | 82 +++++++++++++++++++++---------------------- + po/ru.po | 80 +++++++++++++++++++++--------------------- + po/sssd.pot | 48 +++++++++++++------------- + po/sv.po | 64 +++++++++++++++++----------------- + po/tg.po | 48 +++++++++++++------------- + po/uk.po | 86 +++++++++++++++++++++++----------------------- + po/zh_TW.po | 74 +++++++++++++++++++-------------------- + src/man/po/cs.po | 8 ++--- + src/man/po/es.po | 8 ++--- + src/man/po/fr.po | 8 ++--- + src/man/po/ja.po | 8 ++--- + src/man/po/nl.po | 8 ++--- + src/man/po/pt.po | 8 ++--- + src/man/po/ru.po | 8 ++--- + src/man/po/sssd-docs.pot | 10 +++--- + src/man/po/tg.po | 8 ++--- + src/man/po/uk.po | 8 ++--- + 27 files changed, 645 insertions(+), 643 deletions(-) + +diff --git a/po/de.po b/po/de.po +index edcab536e6dba2a2d21a4fa9fbe69aa462792e76..06cf016f3d2b82a4dbe8d7957d41f0ed46e955c7 100644 +--- a/po/de.po ++++ b/po/de.po +@@ -9,7 +9,7 @@ msgid "" + msgstr "" + "Project-Id-Version: SSSD\n" + "Report-Msgid-Bugs-To: sssd-devel@lists.fedorahosted.org\n" +-"POT-Creation-Date: 2012-05-11 14:59-0400\n" ++"POT-Creation-Date: 2012-05-22 09:33-0400\n" + "PO-Revision-Date: 2012-04-20 16:09+0000\n" + "Last-Translator: sgallagh \n" + "Language-Team: German \n" +@@ -174,7 +174,7 @@ msgid "" + msgstr "" + + #: src/config/SSSDConfig.py:88 +-msgid "Whether to hash host names and adresses in the known_hosts file" ++msgid "Whether to hash host names and addresses in the known_hosts file" + msgstr "" + + #: src/config/SSSDConfig.py:91 +@@ -989,12 +989,12 @@ msgstr "" + + #: src/sss_client/pam_sss.c:639 + #, c-format +-msgid "Your password has expired. You have %d grace login(s) remaining." ++msgid "Your password has expired. You have %1$d grace login(s) remaining." + msgstr "" + + #: src/sss_client/pam_sss.c:685 + #, c-format +-msgid "Your password will expire in %d %s." ++msgid "Your password will expire in %1$d %2$s." + msgstr "" + + #: src/sss_client/pam_sss.c:734 +@@ -1184,7 +1184,7 @@ msgstr "" + + #: src/tools/sss_useradd.c:153 + #, c-format +-msgid "Cannot find group %s in local domain\n" ++msgid "Cannot find group %1$s in local domain\n" + msgstr "" + + #: src/tools/sss_useradd.c:168 src/tools/sss_userdel.c:214 +@@ -1209,12 +1209,12 @@ msgstr "" + + #: src/tools/sss_useradd.c:232 + #, c-format +-msgid "Cannot create user's home directory: %s\n" ++msgid "Cannot create user's home directory: %1$s\n" + msgstr "" + + #: src/tools/sss_useradd.c:243 + #, c-format +-msgid "Cannot create user's mail spool: %s\n" ++msgid "Cannot create user's mail spool: %1$s\n" + msgstr "" + + #: src/tools/sss_useradd.c:255 +@@ -1259,7 +1259,7 @@ msgstr "" + + #: src/tools/sss_groupdel.c:101 + #, c-format +-msgid "Group %s is outside the defined ID range for domain\n" ++msgid "Group %1$s is outside the defined ID range for domain\n" + msgstr "" + + #: src/tools/sss_groupdel.c:115 +@@ -1302,7 +1302,7 @@ msgstr "" + #: src/tools/sss_usermod.c:176 src/tools/sss_usermod.c:203 + #, c-format + msgid "" +-"Cannot find group %s in local domain, only groups in local domain are " ++"Cannot find group %1$s in local domain, only groups in local domain are " + "allowed\n" + msgstr "" + +@@ -1320,7 +1320,7 @@ msgstr "" + + #: src/tools/sss_groupshow.c:562 + #, c-format +-msgid "%s%sGroup: %s\n" ++msgid "%1$s%2$sGroup: %3$s\n" + msgstr "" + + #: src/tools/sss_groupshow.c:563 +@@ -1329,26 +1329,26 @@ msgstr "" + + #: src/tools/sss_groupshow.c:565 + #, c-format +-msgid "%sGID number: %d\n" ++msgid "%1$sGID number: %2$d\n" + msgstr "" + + #: src/tools/sss_groupshow.c:567 + #, c-format +-msgid "%sMember users: " ++msgid "%1$sMember users: " + msgstr "" + + #: src/tools/sss_groupshow.c:574 + #, c-format + msgid "" + "\n" +-"%sIs a member of: " ++"%1$sIs a member of: " + msgstr "" + + #: src/tools/sss_groupshow.c:581 + #, c-format + msgid "" + "\n" +-"%sMember groups: " ++"%1$sMember groups: " + msgstr "" + + #: src/tools/sss_groupshow.c:617 +@@ -1391,7 +1391,7 @@ msgstr "" + + #: src/tools/sss_userdel.c:230 + #, c-format +-msgid "User %s is outside the defined ID range for domain\n" ++msgid "User %1$s is outside the defined ID range for domain\n" + msgstr "" + + #: src/tools/sss_userdel.c:255 +@@ -1400,7 +1400,7 @@ msgstr "" + + #: src/tools/sss_userdel.c:267 + #, c-format +-msgid "WARNING: The user (uid %lu) was still logged in when deleted.\n" ++msgid "WARNING: The user (uid %1$lu) was still logged in when deleted.\n" + msgstr "" + + #: src/tools/sss_userdel.c:272 +@@ -1413,7 +1413,7 @@ msgstr "" + + #: src/tools/sss_userdel.c:284 + #, c-format +-msgid "The post-delete command failed: %s\n" ++msgid "The post-delete command failed: %1$s\n" + msgstr "" + + #: src/tools/sss_userdel.c:296 +@@ -1422,7 +1422,7 @@ msgstr "" + + #: src/tools/sss_userdel.c:298 + #, c-format +-msgid "Cannot remove homedir: %s\n" ++msgid "Cannot remove homedir: %1$s\n" + msgstr "" + + #: src/tools/sss_userdel.c:309 +@@ -1482,22 +1482,22 @@ msgstr "" + + #: src/tools/sss_cache.c:172 + #, c-format +-msgid "No such %s named %s, skipping\n" ++msgid "No such %1$s named %2$s, skipping\n" + msgstr "" + + #: src/tools/sss_cache.c:175 + #, c-format +-msgid "No objects of type %s in the cache, skipping\n" ++msgid "No objects of type %1$s in the cache, skipping\n" + msgstr "" + + #: src/tools/sss_cache.c:187 + #, c-format +-msgid "Couldn't invalidate %s" ++msgid "Couldn't invalidate %1$s" + msgstr "" + + #: src/tools/sss_cache.c:194 + #, c-format +-msgid "Couldn't invalidate %s %s" ++msgid "Couldn't invalidate %1$s %2$s" + msgstr "" + + #: src/tools/sss_cache.c:323 +@@ -1550,7 +1550,7 @@ msgstr "" + + #: src/tools/sss_cache.c:455 + #, c-format +-msgid "Could not open domain %s\n" ++msgid "Could not open domain %1$s\n" + msgstr "" + + #: src/tools/sss_cache.c:457 +@@ -1571,7 +1571,7 @@ msgstr "" + + #: src/tools/tools_util.h:40 + #, c-format +-msgid "%s must be run as root\n" ++msgid "%1$s must be run as root\n" + msgstr "" + + #: src/util/util.h:93 +diff --git a/po/es.po b/po/es.po +index 1877773833a3f6a626a0d7625d4c1d6fb43f60c1..bd172763fb27ba40e132b1536538e3a6564bcf10 100644 +--- a/po/es.po ++++ b/po/es.po +@@ -12,7 +12,7 @@ msgid "" + msgstr "" + "Project-Id-Version: SSSD\n" + "Report-Msgid-Bugs-To: sssd-devel@lists.fedorahosted.org\n" +-"POT-Creation-Date: 2012-05-11 14:59-0400\n" ++"POT-Creation-Date: 2012-05-22 09:33-0400\n" + "PO-Revision-Date: 2012-04-20 16:09+0000\n" + "Last-Translator: sgallagh \n" + "Language-Team: Spanish (Castilian) \n" +@@ -199,7 +199,7 @@ msgid "" + msgstr "" + + #: src/config/SSSDConfig.py:88 +-msgid "Whether to hash host names and adresses in the known_hosts file" ++msgid "Whether to hash host names and addresses in the known_hosts file" + msgstr "" + + #: src/config/SSSDConfig.py:91 +@@ -1041,13 +1041,13 @@ msgid ", your cached password will expire at: " + msgstr ", su contraseña cacheada vencerá el:" + + #: src/sss_client/pam_sss.c:639 +-#, c-format +-msgid "Your password has expired. You have %d grace login(s) remaining." ++#, fuzzy, c-format ++msgid "Your password has expired. You have %1$d grace login(s) remaining." + msgstr "Su contraseña ha expirado. Dispone de %d ingreso(s) excepcionales. " + + #: src/sss_client/pam_sss.c:685 +-#, c-format +-msgid "Your password will expire in %d %s." ++#, fuzzy, c-format ++msgid "Your password will expire in %1$d %2$s." + msgstr "Su contraseña expirará en %d %s." + + #: src/sss_client/pam_sss.c:734 +@@ -1237,8 +1237,8 @@ msgid "Groups must be in the same domain as user\n" + msgstr "Los grupos deben estar en el mismo dominio que el usuario\n" + + #: src/tools/sss_useradd.c:153 +-#, c-format +-msgid "Cannot find group %s in local domain\n" ++#, fuzzy, c-format ++msgid "Cannot find group %1$s in local domain\n" + msgstr "No se pudo encontrar el grupo %s en el dominio local\n" + + #: src/tools/sss_useradd.c:168 src/tools/sss_userdel.c:214 +@@ -1264,13 +1264,13 @@ msgstr "" + "esqueleto\n" + + #: src/tools/sss_useradd.c:232 +-#, c-format +-msgid "Cannot create user's home directory: %s\n" ++#, fuzzy, c-format ++msgid "Cannot create user's home directory: %1$s\n" + msgstr "No se pudo crear el directorio personal del usuario: %s\n" + + #: src/tools/sss_useradd.c:243 +-#, c-format +-msgid "Cannot create user's mail spool: %s\n" ++#, fuzzy, c-format ++msgid "Cannot create user's mail spool: %1$s\n" + msgstr "No se pudo crear el receptor de correo del usuario: %s\n" + + #: src/tools/sss_useradd.c:255 +@@ -1314,8 +1314,8 @@ msgid "Specify group to delete\n" + msgstr "Especifique el grupo a borrar\n" + + #: src/tools/sss_groupdel.c:101 +-#, c-format +-msgid "Group %s is outside the defined ID range for domain\n" ++#, fuzzy, c-format ++msgid "Group %1$s is outside the defined ID range for domain\n" + msgstr "El grupo %s está fuera del rango de ID definido para los dominios\n" + + #: src/tools/sss_groupdel.c:115 +@@ -1361,9 +1361,9 @@ msgstr "" + + #: src/tools/sss_groupmod.c:155 src/tools/sss_groupmod.c:182 + #: src/tools/sss_usermod.c:176 src/tools/sss_usermod.c:203 +-#, c-format ++#, fuzzy, c-format + msgid "" +-"Cannot find group %s in local domain, only groups in local domain are " ++"Cannot find group %1$s in local domain, only groups in local domain are " + "allowed\n" + msgstr "" + "No se pudo encontrar el grupo %s en el dominio local, solo se permiten los " +@@ -1385,8 +1385,8 @@ msgid "Transaction error. Could not modify group.\n" + msgstr "Error de transacción. No se pudo modificar el grupo.\n" + + #: src/tools/sss_groupshow.c:562 +-#, c-format +-msgid "%s%sGroup: %s\n" ++#, fuzzy, c-format ++msgid "%1$s%2$sGroup: %3$s\n" + msgstr "%s%sGrupo: %s\n" + + #: src/tools/sss_groupshow.c:563 +@@ -1394,29 +1394,29 @@ msgid "Magic Private " + msgstr "Magia privada" + + #: src/tools/sss_groupshow.c:565 +-#, c-format +-msgid "%sGID number: %d\n" ++#, fuzzy, c-format ++msgid "%1$sGID number: %2$d\n" + msgstr "%sGID número: %d\n" + + #: src/tools/sss_groupshow.c:567 +-#, c-format +-msgid "%sMember users: " ++#, fuzzy, c-format ++msgid "%1$sMember users: " + msgstr "%sMember usuarios: " + + #: src/tools/sss_groupshow.c:574 +-#, c-format ++#, fuzzy, c-format + msgid "" + "\n" +-"%sIs a member of: " ++"%1$sIs a member of: " + msgstr "" + "\n" + "%sEs miembro de: " + + #: src/tools/sss_groupshow.c:581 +-#, c-format ++#, fuzzy, c-format + msgid "" + "\n" +-"%sMember groups: " ++"%1$sMember groups: " + msgstr "" + "\n" + "%sGrupos de miembro: " +@@ -1462,8 +1462,8 @@ msgid "Specify user to delete\n" + msgstr "Especifique el usuario a borrar\n" + + #: src/tools/sss_userdel.c:230 +-#, c-format +-msgid "User %s is outside the defined ID range for domain\n" ++#, fuzzy, c-format ++msgid "User %1$s is outside the defined ID range for domain\n" + msgstr "El usuario %s está fuera del rango de ID para el dominio\n" + + #: src/tools/sss_userdel.c:255 +@@ -1471,8 +1471,8 @@ msgid "Cannot reset SELinux login context\n" + msgstr "No es posible reiniciar contexto de registro de SELinux\n" + + #: src/tools/sss_userdel.c:267 +-#, c-format +-msgid "WARNING: The user (uid %lu) was still logged in when deleted.\n" ++#, fuzzy, c-format ++msgid "WARNING: The user (uid %1$lu) was still logged in when deleted.\n" + msgstr "" + "ADVERTENCIA: El usuario (uid %lu) todavía se encontraba registrado mientras " + "se lo eliminaba.\n" +@@ -1487,8 +1487,8 @@ msgid "Error while checking if the user was logged in\n" + msgstr "Error mientras se verificaba si el usuario se encontraba registrado\n" + + #: src/tools/sss_userdel.c:284 +-#, c-format +-msgid "The post-delete command failed: %s\n" ++#, fuzzy, c-format ++msgid "The post-delete command failed: %1$s\n" + msgstr "Falló el comando de post-eliminación: %s\n" + + #: src/tools/sss_userdel.c:296 +@@ -1496,8 +1496,8 @@ msgid "Not removing home dir - not owned by user\n" + msgstr "No eliminando el directorio de inicio - no pertenece al usuario\n" + + #: src/tools/sss_userdel.c:298 +-#, c-format +-msgid "Cannot remove homedir: %s\n" ++#, fuzzy, c-format ++msgid "Cannot remove homedir: %1$s\n" + msgstr " Imposible eliminar el directorio de inicio: %s\n" + + #: src/tools/sss_userdel.c:309 +@@ -1564,22 +1564,22 @@ msgstr "" + + #: src/tools/sss_cache.c:172 + #, c-format +-msgid "No such %s named %s, skipping\n" ++msgid "No such %1$s named %2$s, skipping\n" + msgstr "" + + #: src/tools/sss_cache.c:175 + #, c-format +-msgid "No objects of type %s in the cache, skipping\n" ++msgid "No objects of type %1$s in the cache, skipping\n" + msgstr "" + + #: src/tools/sss_cache.c:187 + #, c-format +-msgid "Couldn't invalidate %s" ++msgid "Couldn't invalidate %1$s" + msgstr "" + + #: src/tools/sss_cache.c:194 + #, c-format +-msgid "Couldn't invalidate %s %s" ++msgid "Couldn't invalidate %1$s %2$s" + msgstr "" + + #: src/tools/sss_cache.c:323 +@@ -1632,7 +1632,7 @@ msgstr "" + + #: src/tools/sss_cache.c:455 + #, c-format +-msgid "Could not open domain %s\n" ++msgid "Could not open domain %1$s\n" + msgstr "" + + #: src/tools/sss_cache.c:457 +@@ -1652,8 +1652,8 @@ msgid "Out of memory\n" + msgstr "Falta memoria\n" + + #: src/tools/tools_util.h:40 +-#, c-format +-msgid "%s must be run as root\n" ++#, fuzzy, c-format ++msgid "%1$s must be run as root\n" + msgstr "%s se debe ejecutar como root\n" + + #: src/util/util.h:93 +diff --git a/po/fr.po b/po/fr.po +index 5e712aaf9055f5dade46a88b5094454fa04ad6f1..2bc642d0b778db6770d127c0562784e6ef9bde15 100644 +--- a/po/fr.po ++++ b/po/fr.po +@@ -10,7 +10,7 @@ msgid "" + msgstr "" + "Project-Id-Version: SSSD\n" + "Report-Msgid-Bugs-To: sssd-devel@lists.fedorahosted.org\n" +-"POT-Creation-Date: 2012-05-11 14:59-0400\n" ++"POT-Creation-Date: 2012-05-22 09:33-0400\n" + "PO-Revision-Date: 2012-05-08 08:54+0000\n" + "Last-Translator: Jérôme Fenal \n" + "Language-Team: French \n" +@@ -201,7 +201,7 @@ msgstr "" + "avant de demander au fournisseur à nouveau" + + #: src/config/SSSDConfig.py:88 +-msgid "Whether to hash host names and adresses in the known_hosts file" ++msgid "Whether to hash host names and addresses in the known_hosts file" + msgstr "" + + #: src/config/SSSDConfig.py:91 +@@ -1037,13 +1037,13 @@ msgid ", your cached password will expire at: " + msgstr ", votre mot de passe en cache expirera à :" + + #: src/sss_client/pam_sss.c:639 +-#, c-format +-msgid "Your password has expired. You have %d grace login(s) remaining." ++#, fuzzy, c-format ++msgid "Your password has expired. You have %1$d grace login(s) remaining." + msgstr "Votre mot de passe a expiré. Il vous reste %d connexion autorisée." + + #: src/sss_client/pam_sss.c:685 +-#, c-format +-msgid "Your password will expire in %d %s." ++#, fuzzy, c-format ++msgid "Your password will expire in %1$d %2$s." + msgstr "Votre mot de passe expirera dans %d %s." + + #: src/sss_client/pam_sss.c:734 +@@ -1233,8 +1233,8 @@ msgid "Groups must be in the same domain as user\n" + msgstr "Les groupes doivent être dans le même domaine que l'utilisateur\n" + + #: src/tools/sss_useradd.c:153 +-#, c-format +-msgid "Cannot find group %s in local domain\n" ++#, fuzzy, c-format ++msgid "Cannot find group %1$s in local domain\n" + msgstr "Impossible de trouver le groupe %s dans le domaine local\n" + + #: src/tools/sss_useradd.c:168 src/tools/sss_userdel.c:214 +@@ -1260,13 +1260,13 @@ msgstr "" + "squelette ne sont pas copiées\n" + + #: src/tools/sss_useradd.c:232 +-#, c-format +-msgid "Cannot create user's home directory: %s\n" ++#, fuzzy, c-format ++msgid "Cannot create user's home directory: %1$s\n" + msgstr "Impossible de créer le répertoire de l'utilisateur : %s\n" + + #: src/tools/sss_useradd.c:243 +-#, c-format +-msgid "Cannot create user's mail spool: %s\n" ++#, fuzzy, c-format ++msgid "Cannot create user's mail spool: %1$s\n" + msgstr "" + "Impossible de créer le répertoire de gestion des mails pour l'utilisateur : " + "%s\n" +@@ -1313,8 +1313,8 @@ msgid "Specify group to delete\n" + msgstr "Spécifier le groupe à supprimer\n" + + #: src/tools/sss_groupdel.c:101 +-#, c-format +-msgid "Group %s is outside the defined ID range for domain\n" ++#, fuzzy, c-format ++msgid "Group %1$s is outside the defined ID range for domain\n" + msgstr "" + "Le groupe %s est en dehors de la plage d'identifiants pour le domaine\n" + +@@ -1362,9 +1362,9 @@ msgstr "" + + #: src/tools/sss_groupmod.c:155 src/tools/sss_groupmod.c:182 + #: src/tools/sss_usermod.c:176 src/tools/sss_usermod.c:203 +-#, c-format ++#, fuzzy, c-format + msgid "" +-"Cannot find group %s in local domain, only groups in local domain are " ++"Cannot find group %1$s in local domain, only groups in local domain are " + "allowed\n" + msgstr "" + "Impossible de trouver le groupe %s dans le domaine local, seuls les groupes " +@@ -1387,8 +1387,8 @@ msgid "Transaction error. Could not modify group.\n" + msgstr "Erreur de transaction. Impossible de modifier le groupe.\n" + + #: src/tools/sss_groupshow.c:562 +-#, c-format +-msgid "%s%sGroup: %s\n" ++#, fuzzy, c-format ++msgid "%1$s%2$sGroup: %3$s\n" + msgstr "%s%s groupe : %s\n" + + #: src/tools/sss_groupshow.c:563 +@@ -1396,29 +1396,29 @@ msgid "Magic Private " + msgstr "Magie privée" + + #: src/tools/sss_groupshow.c:565 +-#, c-format +-msgid "%sGID number: %d\n" ++#, fuzzy, c-format ++msgid "%1$sGID number: %2$d\n" + msgstr "%s GID numéro : %d\n" + + #: src/tools/sss_groupshow.c:567 +-#, c-format +-msgid "%sMember users: " ++#, fuzzy, c-format ++msgid "%1$sMember users: " + msgstr "%s utilisateurs membres :" + + #: src/tools/sss_groupshow.c:574 +-#, c-format ++#, fuzzy, c-format + msgid "" + "\n" +-"%sIs a member of: " ++"%1$sIs a member of: " + msgstr "" + "\n" + "%s est membre de :" + + #: src/tools/sss_groupshow.c:581 +-#, c-format ++#, fuzzy, c-format + msgid "" + "\n" +-"%sMember groups: " ++"%1$sMember groups: " + msgstr "" + "\n" + "%s groupes membres :" +@@ -1464,8 +1464,8 @@ msgid "Specify user to delete\n" + msgstr "Définir l'utilisateur à supprimer\n" + + #: src/tools/sss_userdel.c:230 +-#, c-format +-msgid "User %s is outside the defined ID range for domain\n" ++#, fuzzy, c-format ++msgid "User %1$s is outside the defined ID range for domain\n" + msgstr "" + "L'utilisateur %s est en dehors de la plage d'identifiants pour le domaine\n" + +@@ -1474,8 +1474,8 @@ msgid "Cannot reset SELinux login context\n" + msgstr "Impossible de réinitialiser le contexte de connexion SELinux\n" + + #: src/tools/sss_userdel.c:267 +-#, c-format +-msgid "WARNING: The user (uid %lu) was still logged in when deleted.\n" ++#, fuzzy, c-format ++msgid "WARNING: The user (uid %1$lu) was still logged in when deleted.\n" + msgstr "" + "ATTENTION : l'utilisateur (uid %lu) était encore connecté lors de la " + "suppression.\n" +@@ -1490,8 +1490,8 @@ msgid "Error while checking if the user was logged in\n" + msgstr "Erreur en vérifiant si l'utilisateur était connecté\n" + + #: src/tools/sss_userdel.c:284 +-#, c-format +-msgid "The post-delete command failed: %s\n" ++#, fuzzy, c-format ++msgid "The post-delete command failed: %1$s\n" + msgstr "La commande de post-suppression a échoué : %s\n" + + #: src/tools/sss_userdel.c:296 +@@ -1501,8 +1501,8 @@ msgstr "" + "propriétaire\n" + + #: src/tools/sss_userdel.c:298 +-#, c-format +-msgid "Cannot remove homedir: %s\n" ++#, fuzzy, c-format ++msgid "Cannot remove homedir: %1$s\n" + msgstr "Impossible de supprimer le répertoire utilisateur : %s\n" + + #: src/tools/sss_userdel.c:309 +@@ -1570,22 +1570,22 @@ msgstr "" + + #: src/tools/sss_cache.c:172 + #, c-format +-msgid "No such %s named %s, skipping\n" ++msgid "No such %1$s named %2$s, skipping\n" + msgstr "" + + #: src/tools/sss_cache.c:175 + #, c-format +-msgid "No objects of type %s in the cache, skipping\n" ++msgid "No objects of type %1$s in the cache, skipping\n" + msgstr "" + + #: src/tools/sss_cache.c:187 +-#, c-format +-msgid "Couldn't invalidate %s" ++#, fuzzy, c-format ++msgid "Couldn't invalidate %1$s" + msgstr "Impossible d'invalider %s" + + #: src/tools/sss_cache.c:194 +-#, c-format +-msgid "Couldn't invalidate %s %s" ++#, fuzzy, c-format ++msgid "Couldn't invalidate %1$s %2$s" + msgstr "Impossible d'invalider %s %s" + + #: src/tools/sss_cache.c:323 +@@ -1642,7 +1642,7 @@ msgstr "" + + #: src/tools/sss_cache.c:455 + #, c-format +-msgid "Could not open domain %s\n" ++msgid "Could not open domain %1$s\n" + msgstr "" + + #: src/tools/sss_cache.c:457 +@@ -1662,8 +1662,8 @@ msgid "Out of memory\n" + msgstr "Mémoire saturée\n" + + #: src/tools/tools_util.h:40 +-#, c-format +-msgid "%s must be run as root\n" ++#, fuzzy, c-format ++msgid "%1$s must be run as root\n" + msgstr "%s doit être exécuté en tant que root\n" + + #: src/util/util.h:93 +diff --git a/po/hu.po b/po/hu.po +index ba60733934e27550fbb78d3b2d5b0a30a6f706b1..78e2a16d76530cd737468181673b70479f436735 100644 +--- a/po/hu.po ++++ b/po/hu.po +@@ -8,7 +8,7 @@ msgid "" + msgstr "" + "Project-Id-Version: SSSD\n" + "Report-Msgid-Bugs-To: sssd-devel@lists.fedorahosted.org\n" +-"POT-Creation-Date: 2012-05-11 14:59-0400\n" ++"POT-Creation-Date: 2012-05-22 09:33-0400\n" + "PO-Revision-Date: 2012-04-20 16:09+0000\n" + "Last-Translator: sgallagh \n" + "Language-Team: Hungarian \n" +@@ -173,7 +173,7 @@ msgid "" + msgstr "" + + #: src/config/SSSDConfig.py:88 +-msgid "Whether to hash host names and adresses in the known_hosts file" ++msgid "Whether to hash host names and addresses in the known_hosts file" + msgstr "" + + #: src/config/SSSDConfig.py:91 +@@ -987,13 +987,13 @@ msgid ", your cached password will expire at: " + msgstr ", a gyorsítótárazott jelszó lejár ekkor: " + + #: src/sss_client/pam_sss.c:639 +-#, c-format +-msgid "Your password has expired. You have %d grace login(s) remaining." ++#, fuzzy, c-format ++msgid "Your password has expired. You have %1$d grace login(s) remaining." + msgstr "A jelszava lejárt. Még %d bejelentkezés engedélyezett." + + #: src/sss_client/pam_sss.c:685 +-#, c-format +-msgid "Your password will expire in %d %s." ++#, fuzzy, c-format ++msgid "Your password will expire in %1$d %2$s." + msgstr "A jelszava le fog járni %d %s múlva." + + #: src/sss_client/pam_sss.c:734 +@@ -1183,7 +1183,7 @@ msgstr "" + + #: src/tools/sss_useradd.c:153 + #, c-format +-msgid "Cannot find group %s in local domain\n" ++msgid "Cannot find group %1$s in local domain\n" + msgstr "" + + #: src/tools/sss_useradd.c:168 src/tools/sss_userdel.c:214 +@@ -1209,14 +1209,14 @@ msgstr "" + "bele\n" + + #: src/tools/sss_useradd.c:232 +-#, c-format +-msgid "Cannot create user's home directory: %s\n" ++#, fuzzy, c-format ++msgid "Cannot create user's home directory: %1$s\n" + msgstr "Nem sikerült létrehozni a felhasználó könyvtárát: %s\n" + + #: src/tools/sss_useradd.c:243 +-#, c-format +-msgid "Cannot create user's mail spool: %s\n" +-msgstr "" ++#, fuzzy, c-format ++msgid "Cannot create user's mail spool: %1$s\n" ++msgstr "Nem sikerült létrehozni a felhasználó könyvtárát: %s\n" + + #: src/tools/sss_useradd.c:255 + msgid "Could not allocate ID for the user - domain full?\n" +@@ -1260,7 +1260,7 @@ msgstr "" + + #: src/tools/sss_groupdel.c:101 + #, c-format +-msgid "Group %s is outside the defined ID range for domain\n" ++msgid "Group %1$s is outside the defined ID range for domain\n" + msgstr "" + + #: src/tools/sss_groupdel.c:115 +@@ -1303,7 +1303,7 @@ msgstr "" + #: src/tools/sss_usermod.c:176 src/tools/sss_usermod.c:203 + #, c-format + msgid "" +-"Cannot find group %s in local domain, only groups in local domain are " ++"Cannot find group %1$s in local domain, only groups in local domain are " + "allowed\n" + msgstr "" + +@@ -1321,7 +1321,7 @@ msgstr "" + + #: src/tools/sss_groupshow.c:562 + #, c-format +-msgid "%s%sGroup: %s\n" ++msgid "%1$s%2$sGroup: %3$s\n" + msgstr "" + + #: src/tools/sss_groupshow.c:563 +@@ -1329,27 +1329,27 @@ msgid "Magic Private " + msgstr "" + + #: src/tools/sss_groupshow.c:565 +-#, c-format +-msgid "%sGID number: %d\n" ++#, fuzzy, c-format ++msgid "%1$sGID number: %2$d\n" + msgstr "%s GID-je: %d\n" + + #: src/tools/sss_groupshow.c:567 + #, c-format +-msgid "%sMember users: " ++msgid "%1$sMember users: " + msgstr "" + + #: src/tools/sss_groupshow.c:574 + #, c-format + msgid "" + "\n" +-"%sIs a member of: " ++"%1$sIs a member of: " + msgstr "" + + #: src/tools/sss_groupshow.c:581 + #, c-format + msgid "" + "\n" +-"%sMember groups: " ++"%1$sMember groups: " + msgstr "" + + #: src/tools/sss_groupshow.c:617 +@@ -1392,7 +1392,7 @@ msgstr "Adja meg a törlendő felhasználót\n" + + #: src/tools/sss_userdel.c:230 + #, c-format +-msgid "User %s is outside the defined ID range for domain\n" ++msgid "User %1$s is outside the defined ID range for domain\n" + msgstr "" + + #: src/tools/sss_userdel.c:255 +@@ -1401,7 +1401,7 @@ msgstr "" + + #: src/tools/sss_userdel.c:267 + #, c-format +-msgid "WARNING: The user (uid %lu) was still logged in when deleted.\n" ++msgid "WARNING: The user (uid %1$lu) was still logged in when deleted.\n" + msgstr "" + + #: src/tools/sss_userdel.c:272 +@@ -1414,7 +1414,7 @@ msgstr "" + + #: src/tools/sss_userdel.c:284 + #, c-format +-msgid "The post-delete command failed: %s\n" ++msgid "The post-delete command failed: %1$s\n" + msgstr "" + + #: src/tools/sss_userdel.c:296 +@@ -1422,8 +1422,8 @@ msgid "Not removing home dir - not owned by user\n" + msgstr "" + + #: src/tools/sss_userdel.c:298 +-#, c-format +-msgid "Cannot remove homedir: %s\n" ++#, fuzzy, c-format ++msgid "Cannot remove homedir: %1$s\n" + msgstr "Nem lehet eltávolítani a(z) %s könyvtárat\n" + + #: src/tools/sss_userdel.c:309 +@@ -1483,22 +1483,22 @@ msgstr "" + + #: src/tools/sss_cache.c:172 + #, c-format +-msgid "No such %s named %s, skipping\n" ++msgid "No such %1$s named %2$s, skipping\n" + msgstr "" + + #: src/tools/sss_cache.c:175 + #, c-format +-msgid "No objects of type %s in the cache, skipping\n" ++msgid "No objects of type %1$s in the cache, skipping\n" + msgstr "" + + #: src/tools/sss_cache.c:187 + #, c-format +-msgid "Couldn't invalidate %s" ++msgid "Couldn't invalidate %1$s" + msgstr "" + + #: src/tools/sss_cache.c:194 + #, c-format +-msgid "Couldn't invalidate %s %s" ++msgid "Couldn't invalidate %1$s %2$s" + msgstr "" + + #: src/tools/sss_cache.c:323 +@@ -1551,7 +1551,7 @@ msgstr "" + + #: src/tools/sss_cache.c:455 + #, c-format +-msgid "Could not open domain %s\n" ++msgid "Could not open domain %1$s\n" + msgstr "" + + #: src/tools/sss_cache.c:457 +@@ -1571,8 +1571,8 @@ msgid "Out of memory\n" + msgstr "Elfogyott a memória\n" + + #: src/tools/tools_util.h:40 +-#, c-format +-msgid "%s must be run as root\n" ++#, fuzzy, c-format ++msgid "%1$s must be run as root\n" + msgstr "%s csak rendszergazdaként futtatható\n" + + #: src/util/util.h:93 +diff --git a/po/id.po b/po/id.po +index d5e1e22061e67756927d684b6801ecaa312c7ba9..c88f63ae2cde5efe481c4a9e0820d100c242c555 100644 +--- a/po/id.po ++++ b/po/id.po +@@ -7,7 +7,7 @@ msgid "" + msgstr "" + "Project-Id-Version: SSSD\n" + "Report-Msgid-Bugs-To: sssd-devel@lists.fedorahosted.org\n" +-"POT-Creation-Date: 2012-05-11 14:59-0400\n" ++"POT-Creation-Date: 2012-05-22 09:33-0400\n" + "PO-Revision-Date: 2012-04-20 16:09+0000\n" + "Last-Translator: sgallagh \n" + "Language-Team: Indonesian \n" +@@ -172,7 +172,7 @@ msgid "" + msgstr "" + + #: src/config/SSSDConfig.py:88 +-msgid "Whether to hash host names and adresses in the known_hosts file" ++msgid "Whether to hash host names and addresses in the known_hosts file" + msgstr "" + + #: src/config/SSSDConfig.py:91 +@@ -987,12 +987,12 @@ msgstr "" + + #: src/sss_client/pam_sss.c:639 + #, c-format +-msgid "Your password has expired. You have %d grace login(s) remaining." ++msgid "Your password has expired. You have %1$d grace login(s) remaining." + msgstr "" + + #: src/sss_client/pam_sss.c:685 + #, c-format +-msgid "Your password will expire in %d %s." ++msgid "Your password will expire in %1$d %2$s." + msgstr "" + + #: src/sss_client/pam_sss.c:734 +@@ -1181,8 +1181,8 @@ msgid "Groups must be in the same domain as user\n" + msgstr "Grup harus berada dalam domain yang sama dengan pengguna\n" + + #: src/tools/sss_useradd.c:153 +-#, c-format +-msgid "Cannot find group %s in local domain\n" ++#, fuzzy, c-format ++msgid "Cannot find group %1$s in local domain\n" + msgstr "Tidak dapat menemukan grup %s dalam domain lokal\n" + + #: src/tools/sss_useradd.c:168 src/tools/sss_userdel.c:214 +@@ -1207,13 +1207,13 @@ msgstr "" + "Direktori home milik pengguna sudah ada, tidak menyalin data dari skeldir\n" + + #: src/tools/sss_useradd.c:232 +-#, c-format +-msgid "Cannot create user's home directory: %s\n" ++#, fuzzy, c-format ++msgid "Cannot create user's home directory: %1$s\n" + msgstr "Tidak dapat membuat direktori home milik pengguna: %s\n" + + #: src/tools/sss_useradd.c:243 +-#, c-format +-msgid "Cannot create user's mail spool: %s\n" ++#, fuzzy, c-format ++msgid "Cannot create user's mail spool: %1$s\n" + msgstr "Tidak dapat membuat spool mail milik pengguna: %s\n" + + #: src/tools/sss_useradd.c:255 +@@ -1257,8 +1257,8 @@ msgid "Specify group to delete\n" + msgstr "" + + #: src/tools/sss_groupdel.c:101 +-#, c-format +-msgid "Group %s is outside the defined ID range for domain\n" ++#, fuzzy, c-format ++msgid "Group %1$s is outside the defined ID range for domain\n" + msgstr "" + "Grup %s berada di luar rentang ID yang telah didefinisikan untuk domain\n" + +@@ -1306,9 +1306,9 @@ msgstr "" + + #: src/tools/sss_groupmod.c:155 src/tools/sss_groupmod.c:182 + #: src/tools/sss_usermod.c:176 src/tools/sss_usermod.c:203 +-#, c-format ++#, fuzzy, c-format + msgid "" +-"Cannot find group %s in local domain, only groups in local domain are " ++"Cannot find group %1$s in local domain, only groups in local domain are " + "allowed\n" + msgstr "" + "Tidak dapat menemukan grup %s di domain lokal, hanya grup dalam domain lokal " +@@ -1329,7 +1329,7 @@ msgstr "Kesalahan transaksi. Tidak bisa memodifikasi grup.\n" + + #: src/tools/sss_groupshow.c:562 + #, c-format +-msgid "%s%sGroup: %s\n" ++msgid "%1$s%2$sGroup: %3$s\n" + msgstr "" + + #: src/tools/sss_groupshow.c:563 +@@ -1338,26 +1338,26 @@ msgstr "" + + #: src/tools/sss_groupshow.c:565 + #, c-format +-msgid "%sGID number: %d\n" ++msgid "%1$sGID number: %2$d\n" + msgstr "" + + #: src/tools/sss_groupshow.c:567 + #, c-format +-msgid "%sMember users: " ++msgid "%1$sMember users: " + msgstr "" + + #: src/tools/sss_groupshow.c:574 + #, c-format + msgid "" + "\n" +-"%sIs a member of: " ++"%1$sIs a member of: " + msgstr "" + + #: src/tools/sss_groupshow.c:581 + #, c-format + msgid "" + "\n" +-"%sMember groups: " ++"%1$sMember groups: " + msgstr "" + + #: src/tools/sss_groupshow.c:617 +@@ -1399,8 +1399,8 @@ msgid "Specify user to delete\n" + msgstr "Tentukan pengguna yang akan dihapus\n" + + #: src/tools/sss_userdel.c:230 +-#, c-format +-msgid "User %s is outside the defined ID range for domain\n" ++#, fuzzy, c-format ++msgid "User %1$s is outside the defined ID range for domain\n" + msgstr "" + "Pengguna %s berada di luar rentang ID yang telah didefinisikan untuk domain\n" + +@@ -1410,7 +1410,7 @@ msgstr "" + + #: src/tools/sss_userdel.c:267 + #, c-format +-msgid "WARNING: The user (uid %lu) was still logged in when deleted.\n" ++msgid "WARNING: The user (uid %1$lu) was still logged in when deleted.\n" + msgstr "" + + #: src/tools/sss_userdel.c:272 +@@ -1423,7 +1423,7 @@ msgstr "" + + #: src/tools/sss_userdel.c:284 + #, c-format +-msgid "The post-delete command failed: %s\n" ++msgid "The post-delete command failed: %1$s\n" + msgstr "" + + #: src/tools/sss_userdel.c:296 +@@ -1431,8 +1431,8 @@ msgid "Not removing home dir - not owned by user\n" + msgstr "Tidak menghapus home dir - tidak dimiliki oleh pengguna\n" + + #: src/tools/sss_userdel.c:298 +-#, c-format +-msgid "Cannot remove homedir: %s\n" ++#, fuzzy, c-format ++msgid "Cannot remove homedir: %1$s\n" + msgstr "Tidak dapat menghapus homedir: %s\n" + + #: src/tools/sss_userdel.c:309 +@@ -1498,22 +1498,22 @@ msgstr "" + + #: src/tools/sss_cache.c:172 + #, c-format +-msgid "No such %s named %s, skipping\n" ++msgid "No such %1$s named %2$s, skipping\n" + msgstr "" + + #: src/tools/sss_cache.c:175 + #, c-format +-msgid "No objects of type %s in the cache, skipping\n" ++msgid "No objects of type %1$s in the cache, skipping\n" + msgstr "" + + #: src/tools/sss_cache.c:187 + #, c-format +-msgid "Couldn't invalidate %s" ++msgid "Couldn't invalidate %1$s" + msgstr "" + + #: src/tools/sss_cache.c:194 + #, c-format +-msgid "Couldn't invalidate %s %s" ++msgid "Couldn't invalidate %1$s %2$s" + msgstr "" + + #: src/tools/sss_cache.c:323 +@@ -1566,7 +1566,7 @@ msgstr "" + + #: src/tools/sss_cache.c:455 + #, c-format +-msgid "Could not open domain %s\n" ++msgid "Could not open domain %1$s\n" + msgstr "" + + #: src/tools/sss_cache.c:457 +@@ -1586,8 +1586,8 @@ msgid "Out of memory\n" + msgstr "Kehabisan memori\n" + + #: src/tools/tools_util.h:40 +-#, c-format +-msgid "%s must be run as root\n" ++#, fuzzy, c-format ++msgid "%1$s must be run as root\n" + msgstr "%s harus dijalankan sebagai root\n" + + #: src/util/util.h:93 +diff --git a/po/it.po b/po/it.po +index 9864a2123f9dcf4dd6bb264c2bbd24ab5fa8ef1c..341e1c02ffdf9d10d3a11fdd495bfb1a215ecc7b 100644 +--- a/po/it.po ++++ b/po/it.po +@@ -8,7 +8,7 @@ msgid "" + msgstr "" + "Project-Id-Version: SSSD\n" + "Report-Msgid-Bugs-To: sssd-devel@lists.fedorahosted.org\n" +-"POT-Creation-Date: 2012-05-11 14:59-0400\n" ++"POT-Creation-Date: 2012-05-22 09:33-0400\n" + "PO-Revision-Date: 2012-04-20 16:09+0000\n" + "Last-Translator: sgallagh \n" + "Language-Team: Italian \n" +@@ -176,7 +176,7 @@ msgid "" + msgstr "" + + #: src/config/SSSDConfig.py:88 +-msgid "Whether to hash host names and adresses in the known_hosts file" ++msgid "Whether to hash host names and addresses in the known_hosts file" + msgstr "" + + #: src/config/SSSDConfig.py:91 +@@ -997,13 +997,13 @@ msgid ", your cached password will expire at: " + msgstr ", la password in cache scadrà il: " + + #: src/sss_client/pam_sss.c:639 +-#, c-format +-msgid "Your password has expired. You have %d grace login(s) remaining." ++#, fuzzy, c-format ++msgid "Your password has expired. You have %1$d grace login(s) remaining." + msgstr "La password è scaduta. Hai ancora a disposizione %d login di cortesia." + + #: src/sss_client/pam_sss.c:685 +-#, c-format +-msgid "Your password will expire in %d %s." ++#, fuzzy, c-format ++msgid "Your password will expire in %1$d %2$s." + msgstr "La password scadrà tra %d %s" + + #: src/sss_client/pam_sss.c:734 +@@ -1192,8 +1192,8 @@ msgid "Groups must be in the same domain as user\n" + msgstr "I gruppi devono essere nello stesso dominio dell'utente\n" + + #: src/tools/sss_useradd.c:153 +-#, c-format +-msgid "Cannot find group %s in local domain\n" ++#, fuzzy, c-format ++msgid "Cannot find group %1$s in local domain\n" + msgstr "Impossibile trovare il gruppo %s nel dominio locale\n" + + #: src/tools/sss_useradd.c:168 src/tools/sss_userdel.c:214 +@@ -1219,13 +1219,13 @@ msgstr "" + "directory skeleton\n" + + #: src/tools/sss_useradd.c:232 +-#, c-format +-msgid "Cannot create user's home directory: %s\n" ++#, fuzzy, c-format ++msgid "Cannot create user's home directory: %1$s\n" + msgstr "Impossibile creare la directory home dell'utente: %s\n" + + #: src/tools/sss_useradd.c:243 +-#, c-format +-msgid "Cannot create user's mail spool: %s\n" ++#, fuzzy, c-format ++msgid "Cannot create user's mail spool: %1$s\n" + msgstr "Impossibile creare lo spool di mail dell'utente: %s\n" + + #: src/tools/sss_useradd.c:255 +@@ -1269,8 +1269,8 @@ msgid "Specify group to delete\n" + msgstr "Specificare il gruppo da eliminare\n" + + #: src/tools/sss_groupdel.c:101 +-#, c-format +-msgid "Group %s is outside the defined ID range for domain\n" ++#, fuzzy, c-format ++msgid "Group %1$s is outside the defined ID range for domain\n" + msgstr "" + "Il gruppo %s è al di fuori del range di ID specificato per il dominio\n" + +@@ -1317,9 +1317,9 @@ msgstr "" + + #: src/tools/sss_groupmod.c:155 src/tools/sss_groupmod.c:182 + #: src/tools/sss_usermod.c:176 src/tools/sss_usermod.c:203 +-#, c-format ++#, fuzzy, c-format + msgid "" +-"Cannot find group %s in local domain, only groups in local domain are " ++"Cannot find group %1$s in local domain, only groups in local domain are " + "allowed\n" + msgstr "" + "Impossibile trovare il gruppo %s nel dominio locale, solo i gruppi nel " +@@ -1342,8 +1342,8 @@ msgid "Transaction error. Could not modify group.\n" + msgstr "Errore della transazione. Impossibile modificare il gruppo.\n" + + #: src/tools/sss_groupshow.c:562 +-#, c-format +-msgid "%s%sGroup: %s\n" ++#, fuzzy, c-format ++msgid "%1$s%2$sGroup: %3$s\n" + msgstr "%s%sGruppo: %s\n" + + #: src/tools/sss_groupshow.c:563 +@@ -1351,29 +1351,29 @@ msgid "Magic Private " + msgstr "Magic Private " + + #: src/tools/sss_groupshow.c:565 +-#, c-format +-msgid "%sGID number: %d\n" ++#, fuzzy, c-format ++msgid "%1$sGID number: %2$d\n" + msgstr "%sNumero GID: %d\n" + + #: src/tools/sss_groupshow.c:567 +-#, c-format +-msgid "%sMember users: " ++#, fuzzy, c-format ++msgid "%1$sMember users: " + msgstr "%sUtenti membri: " + + #: src/tools/sss_groupshow.c:574 +-#, c-format ++#, fuzzy, c-format + msgid "" + "\n" +-"%sIs a member of: " ++"%1$sIs a member of: " + msgstr "" + "\n" + "%sE' membro di: " + + #: src/tools/sss_groupshow.c:581 +-#, c-format ++#, fuzzy, c-format + msgid "" + "\n" +-"%sMember groups: " ++"%1$sMember groups: " + msgstr "" + "\n" + "%sGruppi membro: " +@@ -1419,8 +1419,8 @@ msgid "Specify user to delete\n" + msgstr "Specificare l'utente da cancellare\n" + + #: src/tools/sss_userdel.c:230 +-#, c-format +-msgid "User %s is outside the defined ID range for domain\n" ++#, fuzzy, c-format ++msgid "User %1$s is outside the defined ID range for domain\n" + msgstr "L'utente %s è all'interno del range di ID definito per il dominio\n" + + #: src/tools/sss_userdel.c:255 +@@ -1429,7 +1429,7 @@ msgstr "" + + #: src/tools/sss_userdel.c:267 + #, c-format +-msgid "WARNING: The user (uid %lu) was still logged in when deleted.\n" ++msgid "WARNING: The user (uid %1$lu) was still logged in when deleted.\n" + msgstr "" + + #: src/tools/sss_userdel.c:272 +@@ -1442,7 +1442,7 @@ msgstr "" + + #: src/tools/sss_userdel.c:284 + #, c-format +-msgid "The post-delete command failed: %s\n" ++msgid "The post-delete command failed: %1$s\n" + msgstr "" + + #: src/tools/sss_userdel.c:296 +@@ -1450,8 +1450,8 @@ msgid "Not removing home dir - not owned by user\n" + msgstr "Home directory non eliminata - non appartiene all'utente\n" + + #: src/tools/sss_userdel.c:298 +-#, c-format +-msgid "Cannot remove homedir: %s\n" ++#, fuzzy, c-format ++msgid "Cannot remove homedir: %1$s\n" + msgstr "Impossibile rimuovere la home directory: %s\n" + + #: src/tools/sss_userdel.c:309 +@@ -1517,22 +1517,22 @@ msgstr "" + + #: src/tools/sss_cache.c:172 + #, c-format +-msgid "No such %s named %s, skipping\n" ++msgid "No such %1$s named %2$s, skipping\n" + msgstr "" + + #: src/tools/sss_cache.c:175 + #, c-format +-msgid "No objects of type %s in the cache, skipping\n" ++msgid "No objects of type %1$s in the cache, skipping\n" + msgstr "" + + #: src/tools/sss_cache.c:187 + #, c-format +-msgid "Couldn't invalidate %s" ++msgid "Couldn't invalidate %1$s" + msgstr "" + + #: src/tools/sss_cache.c:194 + #, c-format +-msgid "Couldn't invalidate %s %s" ++msgid "Couldn't invalidate %1$s %2$s" + msgstr "" + + #: src/tools/sss_cache.c:323 +@@ -1585,7 +1585,7 @@ msgstr "" + + #: src/tools/sss_cache.c:455 + #, c-format +-msgid "Could not open domain %s\n" ++msgid "Could not open domain %1$s\n" + msgstr "" + + #: src/tools/sss_cache.c:457 +@@ -1605,8 +1605,8 @@ msgid "Out of memory\n" + msgstr "Memoria esaurita\n" + + #: src/tools/tools_util.h:40 +-#, c-format +-msgid "%s must be run as root\n" ++#, fuzzy, c-format ++msgid "%1$s must be run as root\n" + msgstr "%s deve essere eseguito come root\n" + + #: src/util/util.h:93 +diff --git a/po/ja.po b/po/ja.po +index 65c795c7c45caaa4edd9b50281900546e13135d3..da73a9c5afd03543fa7ed88b8dad3d132f46339c 100644 +--- a/po/ja.po ++++ b/po/ja.po +@@ -8,7 +8,7 @@ msgid "" + msgstr "" + "Project-Id-Version: SSSD\n" + "Report-Msgid-Bugs-To: sssd-devel@lists.fedorahosted.org\n" +-"POT-Creation-Date: 2012-05-11 14:59-0400\n" ++"POT-Creation-Date: 2012-05-22 09:33-0400\n" + "PO-Revision-Date: 2012-04-23 00:36+0000\n" + "Last-Translator: Tomoyuki KATO \n" + "Language-Team: Japanese \n" +@@ -178,7 +178,7 @@ msgid "" + msgstr "再びプロバイダーに問い合わせる前に sudo ルールをキャッシュする秒数" + + #: src/config/SSSDConfig.py:88 +-msgid "Whether to hash host names and adresses in the known_hosts file" ++msgid "Whether to hash host names and addresses in the known_hosts file" + msgstr "" + + #: src/config/SSSDConfig.py:91 +@@ -994,14 +994,14 @@ msgid ", your cached password will expire at: " + msgstr "、キャッシュされたパスワードが失効します: " + + #: src/sss_client/pam_sss.c:639 +-#, c-format +-msgid "Your password has expired. You have %d grace login(s) remaining." ++#, fuzzy, c-format ++msgid "Your password has expired. You have %1$d grace login(s) remaining." + msgstr "" + "パスワードの期限が切れました。%d 回の穏やかなログインが残されています。" + + #: src/sss_client/pam_sss.c:685 +-#, c-format +-msgid "Your password will expire in %d %s." ++#, fuzzy, c-format ++msgid "Your password will expire in %1$d %2$s." + msgstr "あなたのパスワードは %d %s に期限が切れます。" + + #: src/sss_client/pam_sss.c:734 +@@ -1191,8 +1191,8 @@ msgid "Groups must be in the same domain as user\n" + msgstr "グループがユーザーと同じドメインになければいけません\n" + + #: src/tools/sss_useradd.c:153 +-#, c-format +-msgid "Cannot find group %s in local domain\n" ++#, fuzzy, c-format ++msgid "Cannot find group %1$s in local domain\n" + msgstr "グループ %s をローカルドメインに見つけられませんでした\n" + + #: src/tools/sss_useradd.c:168 src/tools/sss_userdel.c:214 +@@ -1218,13 +1218,13 @@ msgstr "" + "らデータをコピーしません\n" + + #: src/tools/sss_useradd.c:232 +-#, c-format +-msgid "Cannot create user's home directory: %s\n" ++#, fuzzy, c-format ++msgid "Cannot create user's home directory: %1$s\n" + msgstr "ユーザーのホームディレクトリーを作成できません: %s\n" + + #: src/tools/sss_useradd.c:243 +-#, c-format +-msgid "Cannot create user's mail spool: %s\n" ++#, fuzzy, c-format ++msgid "Cannot create user's mail spool: %1$s\n" + msgstr "ユーザーのメールスプールを作成できません: %s\n" + + #: src/tools/sss_useradd.c:255 +@@ -1268,8 +1268,8 @@ msgid "Specify group to delete\n" + msgstr "削除するグループを指定してください\n" + + #: src/tools/sss_groupdel.c:101 +-#, c-format +-msgid "Group %s is outside the defined ID range for domain\n" ++#, fuzzy, c-format ++msgid "Group %1$s is outside the defined ID range for domain\n" + msgstr "グループ %s はドメインに対して定義された ID の範囲を越えています\n" + + #: src/tools/sss_groupdel.c:115 +@@ -1314,9 +1314,9 @@ msgstr "メンバーグループが親グループと同じドメインにある + + #: src/tools/sss_groupmod.c:155 src/tools/sss_groupmod.c:182 + #: src/tools/sss_usermod.c:176 src/tools/sss_usermod.c:203 +-#, c-format ++#, fuzzy, c-format + msgid "" +-"Cannot find group %s in local domain, only groups in local domain are " ++"Cannot find group %1$s in local domain, only groups in local domain are " + "allowed\n" + msgstr "" + "ローカルドメインにグループ %s が見つかりませんでした。ローカルドメインにある" +@@ -1338,8 +1338,8 @@ msgid "Transaction error. Could not modify group.\n" + msgstr "トランザクションエラー。グループを変更できませんでした。\n" + + #: src/tools/sss_groupshow.c:562 +-#, c-format +-msgid "%s%sGroup: %s\n" ++#, fuzzy, c-format ++msgid "%1$s%2$sGroup: %3$s\n" + msgstr "%s%s グループ: %s\n" + + #: src/tools/sss_groupshow.c:563 +@@ -1347,29 +1347,29 @@ msgid "Magic Private " + msgstr "マジックプライベート " + + #: src/tools/sss_groupshow.c:565 +-#, c-format +-msgid "%sGID number: %d\n" ++#, fuzzy, c-format ++msgid "%1$sGID number: %2$d\n" + msgstr "%s GID 番号: %d\n" + + #: src/tools/sss_groupshow.c:567 +-#, c-format +-msgid "%sMember users: " ++#, fuzzy, c-format ++msgid "%1$sMember users: " + msgstr "%s メンバーユーザー: " + + #: src/tools/sss_groupshow.c:574 +-#, c-format ++#, fuzzy, c-format + msgid "" + "\n" +-"%sIs a member of: " ++"%1$sIs a member of: " + msgstr "" + "\n" + "%s は次のメンバーです: " + + #: src/tools/sss_groupshow.c:581 +-#, c-format ++#, fuzzy, c-format + msgid "" + "\n" +-"%sMember groups: " ++"%1$sMember groups: " + msgstr "" + "\n" + "%s メンバーグループ: " +@@ -1415,8 +1415,8 @@ msgid "Specify user to delete\n" + msgstr "削除するユーザーを指定する\n" + + #: src/tools/sss_userdel.c:230 +-#, c-format +-msgid "User %s is outside the defined ID range for domain\n" ++#, fuzzy, c-format ++msgid "User %1$s is outside the defined ID range for domain\n" + msgstr "ユーザー %s はドメインに対して定義された ID の範囲を越えています\n" + + #: src/tools/sss_userdel.c:255 +@@ -1424,8 +1424,8 @@ msgid "Cannot reset SELinux login context\n" + msgstr "SELinux ログインコンテキストをリセットできません\n" + + #: src/tools/sss_userdel.c:267 +-#, c-format +-msgid "WARNING: The user (uid %lu) was still logged in when deleted.\n" ++#, fuzzy, c-format ++msgid "WARNING: The user (uid %1$lu) was still logged in when deleted.\n" + msgstr "" + "警告: ユーザー (uid %lu) が削除されたときにまだログインしていました。\n" + +@@ -1439,8 +1439,8 @@ msgid "Error while checking if the user was logged in\n" + msgstr "ユーザーがログインしていたかを確認中にエラーが発生しました\n" + + #: src/tools/sss_userdel.c:284 +-#, c-format +-msgid "The post-delete command failed: %s\n" ++#, fuzzy, c-format ++msgid "The post-delete command failed: %1$s\n" + msgstr "post-delete コマンドに失敗しました: %s\n" + + #: src/tools/sss_userdel.c:296 +@@ -1449,8 +1449,8 @@ msgstr "" + "ホームディレクトリーを削除していません - ユーザーにより所有されていません\n" + + #: src/tools/sss_userdel.c:298 +-#, c-format +-msgid "Cannot remove homedir: %s\n" ++#, fuzzy, c-format ++msgid "Cannot remove homedir: %1$s\n" + msgstr "ホームディレクトリーを削除できません: %s\n" + + #: src/tools/sss_userdel.c:309 +@@ -1516,22 +1516,22 @@ msgstr "" + + #: src/tools/sss_cache.c:172 + #, c-format +-msgid "No such %s named %s, skipping\n" ++msgid "No such %1$s named %2$s, skipping\n" + msgstr "" + + #: src/tools/sss_cache.c:175 + #, c-format +-msgid "No objects of type %s in the cache, skipping\n" ++msgid "No objects of type %1$s in the cache, skipping\n" + msgstr "" + + #: src/tools/sss_cache.c:187 +-#, c-format +-msgid "Couldn't invalidate %s" ++#, fuzzy, c-format ++msgid "Couldn't invalidate %1$s" + msgstr "%s を無効化できませんでした" + + #: src/tools/sss_cache.c:194 +-#, c-format +-msgid "Couldn't invalidate %s %s" ++#, fuzzy, c-format ++msgid "Couldn't invalidate %1$s %2$s" + msgstr "%s %s を無効化できませんでした" + + #: src/tools/sss_cache.c:323 +@@ -1588,7 +1588,7 @@ msgstr "" + + #: src/tools/sss_cache.c:455 + #, c-format +-msgid "Could not open domain %s\n" ++msgid "Could not open domain %1$s\n" + msgstr "" + + #: src/tools/sss_cache.c:457 +@@ -1608,8 +1608,8 @@ msgid "Out of memory\n" + msgstr "メモリー不足\n" + + #: src/tools/tools_util.h:40 +-#, c-format +-msgid "%s must be run as root\n" ++#, fuzzy, c-format ++msgid "%1$s must be run as root\n" + msgstr "%s は root として実行する必要があります\n" + + #: src/util/util.h:93 +diff --git a/po/nb.po b/po/nb.po +index dfc90ff226e4778aea3378e9a3219c91d6e3bb13..b808d0a7ca5629b319660e70ada18b3c1087a7e9 100644 +--- a/po/nb.po ++++ b/po/nb.po +@@ -8,7 +8,7 @@ msgid "" + msgstr "" + "Project-Id-Version: SSSD\n" + "Report-Msgid-Bugs-To: sssd-devel@lists.fedorahosted.org\n" +-"POT-Creation-Date: 2012-05-11 14:59-0400\n" ++"POT-Creation-Date: 2012-05-22 09:33-0400\n" + "PO-Revision-Date: 2012-04-25 18:21+0000\n" + "Last-Translator: Kjartan Maraas \n" + "Language-Team: Norwegian Bokmål \n" +@@ -173,7 +173,7 @@ msgid "" + msgstr "" + + #: src/config/SSSDConfig.py:88 +-msgid "Whether to hash host names and adresses in the known_hosts file" ++msgid "Whether to hash host names and addresses in the known_hosts file" + msgstr "" + + #: src/config/SSSDConfig.py:91 +@@ -987,12 +987,12 @@ msgstr "" + + #: src/sss_client/pam_sss.c:639 + #, c-format +-msgid "Your password has expired. You have %d grace login(s) remaining." ++msgid "Your password has expired. You have %1$d grace login(s) remaining." + msgstr "" + + #: src/sss_client/pam_sss.c:685 + #, c-format +-msgid "Your password will expire in %d %s." ++msgid "Your password will expire in %1$d %2$s." + msgstr "" + + #: src/sss_client/pam_sss.c:734 +@@ -1182,7 +1182,7 @@ msgstr "" + + #: src/tools/sss_useradd.c:153 + #, c-format +-msgid "Cannot find group %s in local domain\n" ++msgid "Cannot find group %1$s in local domain\n" + msgstr "" + + #: src/tools/sss_useradd.c:168 src/tools/sss_userdel.c:214 +@@ -1207,12 +1207,12 @@ msgstr "" + + #: src/tools/sss_useradd.c:232 + #, c-format +-msgid "Cannot create user's home directory: %s\n" ++msgid "Cannot create user's home directory: %1$s\n" + msgstr "" + + #: src/tools/sss_useradd.c:243 + #, c-format +-msgid "Cannot create user's mail spool: %s\n" ++msgid "Cannot create user's mail spool: %1$s\n" + msgstr "" + + #: src/tools/sss_useradd.c:255 +@@ -1257,7 +1257,7 @@ msgstr "" + + #: src/tools/sss_groupdel.c:101 + #, c-format +-msgid "Group %s is outside the defined ID range for domain\n" ++msgid "Group %1$s is outside the defined ID range for domain\n" + msgstr "" + + #: src/tools/sss_groupdel.c:115 +@@ -1300,7 +1300,7 @@ msgstr "" + #: src/tools/sss_usermod.c:176 src/tools/sss_usermod.c:203 + #, c-format + msgid "" +-"Cannot find group %s in local domain, only groups in local domain are " ++"Cannot find group %1$s in local domain, only groups in local domain are " + "allowed\n" + msgstr "" + +@@ -1318,7 +1318,7 @@ msgstr "" + + #: src/tools/sss_groupshow.c:562 + #, c-format +-msgid "%s%sGroup: %s\n" ++msgid "%1$s%2$sGroup: %3$s\n" + msgstr "" + + #: src/tools/sss_groupshow.c:563 +@@ -1327,26 +1327,26 @@ msgstr "" + + #: src/tools/sss_groupshow.c:565 + #, c-format +-msgid "%sGID number: %d\n" ++msgid "%1$sGID number: %2$d\n" + msgstr "" + + #: src/tools/sss_groupshow.c:567 + #, c-format +-msgid "%sMember users: " ++msgid "%1$sMember users: " + msgstr "" + + #: src/tools/sss_groupshow.c:574 + #, c-format + msgid "" + "\n" +-"%sIs a member of: " ++"%1$sIs a member of: " + msgstr "" + + #: src/tools/sss_groupshow.c:581 + #, c-format + msgid "" + "\n" +-"%sMember groups: " ++"%1$sMember groups: " + msgstr "" + + #: src/tools/sss_groupshow.c:617 +@@ -1389,7 +1389,7 @@ msgstr "" + + #: src/tools/sss_userdel.c:230 + #, c-format +-msgid "User %s is outside the defined ID range for domain\n" ++msgid "User %1$s is outside the defined ID range for domain\n" + msgstr "" + + #: src/tools/sss_userdel.c:255 +@@ -1398,7 +1398,7 @@ msgstr "" + + #: src/tools/sss_userdel.c:267 + #, c-format +-msgid "WARNING: The user (uid %lu) was still logged in when deleted.\n" ++msgid "WARNING: The user (uid %1$lu) was still logged in when deleted.\n" + msgstr "" + + #: src/tools/sss_userdel.c:272 +@@ -1411,7 +1411,7 @@ msgstr "" + + #: src/tools/sss_userdel.c:284 + #, c-format +-msgid "The post-delete command failed: %s\n" ++msgid "The post-delete command failed: %1$s\n" + msgstr "" + + #: src/tools/sss_userdel.c:296 +@@ -1420,7 +1420,7 @@ msgstr "" + + #: src/tools/sss_userdel.c:298 + #, c-format +-msgid "Cannot remove homedir: %s\n" ++msgid "Cannot remove homedir: %1$s\n" + msgstr "" + + #: src/tools/sss_userdel.c:309 +@@ -1480,22 +1480,22 @@ msgstr "" + + #: src/tools/sss_cache.c:172 + #, c-format +-msgid "No such %s named %s, skipping\n" ++msgid "No such %1$s named %2$s, skipping\n" + msgstr "" + + #: src/tools/sss_cache.c:175 + #, c-format +-msgid "No objects of type %s in the cache, skipping\n" ++msgid "No objects of type %1$s in the cache, skipping\n" + msgstr "" + + #: src/tools/sss_cache.c:187 + #, c-format +-msgid "Couldn't invalidate %s" ++msgid "Couldn't invalidate %1$s" + msgstr "" + + #: src/tools/sss_cache.c:194 + #, c-format +-msgid "Couldn't invalidate %s %s" ++msgid "Couldn't invalidate %1$s %2$s" + msgstr "" + + #: src/tools/sss_cache.c:323 +@@ -1548,7 +1548,7 @@ msgstr "" + + #: src/tools/sss_cache.c:455 + #, c-format +-msgid "Could not open domain %s\n" ++msgid "Could not open domain %1$s\n" + msgstr "" + + #: src/tools/sss_cache.c:457 +@@ -1569,7 +1569,7 @@ msgstr "" + + #: src/tools/tools_util.h:40 + #, c-format +-msgid "%s must be run as root\n" ++msgid "%1$s must be run as root\n" + msgstr "" + + #: src/util/util.h:93 +diff --git a/po/nl.po b/po/nl.po +index 4bde6a9181c16351c6e8d6e0d79989157470a944..26bc48370a9bb03664a898197c241a7073b914d7 100644 +--- a/po/nl.po ++++ b/po/nl.po +@@ -11,7 +11,7 @@ msgid "" + msgstr "" + "Project-Id-Version: SSSD\n" + "Report-Msgid-Bugs-To: sssd-devel@lists.fedorahosted.org\n" +-"POT-Creation-Date: 2012-05-11 14:59-0400\n" ++"POT-Creation-Date: 2012-05-22 09:33-0400\n" + "PO-Revision-Date: 2012-04-20 16:09+0000\n" + "Last-Translator: sgallagh \n" + "Language-Team: Dutch (http://www.transifex.net/projects/p/fedora/language/" +@@ -195,7 +195,7 @@ msgstr "" + "provider er opnieuw om wordt gevraagd" + + #: src/config/SSSDConfig.py:88 +-msgid "Whether to hash host names and adresses in the known_hosts file" ++msgid "Whether to hash host names and addresses in the known_hosts file" + msgstr "" + + #: src/config/SSSDConfig.py:91 +@@ -1036,13 +1036,13 @@ msgid ", your cached password will expire at: " + msgstr ", uw wachtwoord verloopt op:" + + #: src/sss_client/pam_sss.c:639 +-#, c-format +-msgid "Your password has expired. You have %d grace login(s) remaining." ++#, fuzzy, c-format ++msgid "Your password has expired. You have %1$d grace login(s) remaining." + msgstr "Uw wachtwoord is verlopen. U heeft %d genadigde login(s) over." + + #: src/sss_client/pam_sss.c:685 +-#, c-format +-msgid "Your password will expire in %d %s." ++#, fuzzy, c-format ++msgid "Your password will expire in %1$d %2$s." + msgstr "Uw wachtwoord verloopt in %d %s." + + #: src/sss_client/pam_sss.c:734 +@@ -1232,8 +1232,8 @@ msgstr "" + "De groepen moeten zich in het zelfde domein als de gebruiker bevinden\n" + + #: src/tools/sss_useradd.c:153 +-#, c-format +-msgid "Cannot find group %s in local domain\n" ++#, fuzzy, c-format ++msgid "Cannot find group %1$s in local domain\n" + msgstr "Kan de groep %s niet vinden in het lokale domein\n" + + #: src/tools/sss_useradd.c:168 src/tools/sss_userdel.c:214 +@@ -1257,13 +1257,13 @@ msgid "User's home directory already exists, not copying data from skeldir\n" + msgstr "De gebruikersmap bestaat reeds, voorbeeldmap niet gekopieerd\n" + + #: src/tools/sss_useradd.c:232 +-#, c-format +-msgid "Cannot create user's home directory: %s\n" ++#, fuzzy, c-format ++msgid "Cannot create user's home directory: %1$s\n" + msgstr "Kan de gebruikersmap niet aanmaken: %s\n" + + #: src/tools/sss_useradd.c:243 +-#, c-format +-msgid "Cannot create user's mail spool: %s\n" ++#, fuzzy, c-format ++msgid "Cannot create user's mail spool: %1$s\n" + msgstr "Kan het postbestand van de gebruiker niet aanmaken: %s\n" + + #: src/tools/sss_useradd.c:255 +@@ -1307,8 +1307,8 @@ msgid "Specify group to delete\n" + msgstr "Geef groep op om te verwijderen\n" + + #: src/tools/sss_groupdel.c:101 +-#, c-format +-msgid "Group %s is outside the defined ID range for domain\n" ++#, fuzzy, c-format ++msgid "Group %1$s is outside the defined ID range for domain\n" + msgstr "De groep %s valt buiten het toegestane bereik voor het domein\n" + + #: src/tools/sss_groupdel.c:115 +@@ -1355,9 +1355,9 @@ msgstr "" + + #: src/tools/sss_groupmod.c:155 src/tools/sss_groupmod.c:182 + #: src/tools/sss_usermod.c:176 src/tools/sss_usermod.c:203 +-#, c-format ++#, fuzzy, c-format + msgid "" +-"Cannot find group %s in local domain, only groups in local domain are " ++"Cannot find group %1$s in local domain, only groups in local domain are " + "allowed\n" + msgstr "" + "Kan de groep %s niet vinden in het lokale domein, alleen groepen in het " +@@ -1379,8 +1379,8 @@ msgid "Transaction error. Could not modify group.\n" + msgstr "Transactiefout. Kan de groep niet aanpassen.\n" + + #: src/tools/sss_groupshow.c:562 +-#, c-format +-msgid "%s%sGroup: %s\n" ++#, fuzzy, c-format ++msgid "%1$s%2$sGroup: %3$s\n" + msgstr "%s%sGroep:%s\n" + + #: src/tools/sss_groupshow.c:563 +@@ -1388,29 +1388,29 @@ msgid "Magic Private " + msgstr "Magic Private " + + #: src/tools/sss_groupshow.c:565 +-#, c-format +-msgid "%sGID number: %d\n" ++#, fuzzy, c-format ++msgid "%1$sGID number: %2$d\n" + msgstr "%sGID nummer: %d\n" + + #: src/tools/sss_groupshow.c:567 +-#, c-format +-msgid "%sMember users: " ++#, fuzzy, c-format ++msgid "%1$sMember users: " + msgstr "%sLeden: " + + #: src/tools/sss_groupshow.c:574 +-#, c-format ++#, fuzzy, c-format + msgid "" + "\n" +-"%sIs a member of: " ++"%1$sIs a member of: " + msgstr "" + "\n" + "%sIs lid van: " + + #: src/tools/sss_groupshow.c:581 +-#, c-format ++#, fuzzy, c-format + msgid "" + "\n" +-"%sMember groups: " ++"%1$sMember groups: " + msgstr "" + "\n" + "%sLidgroepen: " +@@ -1458,8 +1458,8 @@ msgid "Specify user to delete\n" + msgstr "Specificeer de te verwijderen gebruiker\n" + + #: src/tools/sss_userdel.c:230 +-#, c-format +-msgid "User %s is outside the defined ID range for domain\n" ++#, fuzzy, c-format ++msgid "User %1$s is outside the defined ID range for domain\n" + msgstr "Gebruiker %s valt buiten het toegestane ID-bereik voor het domein\n" + + #: src/tools/sss_userdel.c:255 +@@ -1467,8 +1467,8 @@ msgid "Cannot reset SELinux login context\n" + msgstr "Kan de SELinux logincontext niet herstellen\n" + + #: src/tools/sss_userdel.c:267 +-#, c-format +-msgid "WARNING: The user (uid %lu) was still logged in when deleted.\n" ++#, fuzzy, c-format ++msgid "WARNING: The user (uid %1$lu) was still logged in when deleted.\n" + msgstr "" + "WAARSCHUWING: De gebruiker (uid %lu) was nogsteeds ingelogd tijdens het " + "verwijderen.\n" +@@ -1482,8 +1482,8 @@ msgid "Error while checking if the user was logged in\n" + msgstr "Fout bij het controleren of de gebruiker was ingelogd\n" + + #: src/tools/sss_userdel.c:284 +-#, c-format +-msgid "The post-delete command failed: %s\n" ++#, fuzzy, c-format ++msgid "The post-delete command failed: %1$s\n" + msgstr "Het post-verwijder commando faalde: %s\n" + + #: src/tools/sss_userdel.c:296 +@@ -1492,8 +1492,8 @@ msgstr "" + "De gebruikersmap wordt niet verwijderd - de gebruiker is geen eigenaar\n" + + #: src/tools/sss_userdel.c:298 +-#, c-format +-msgid "Cannot remove homedir: %s\n" ++#, fuzzy, c-format ++msgid "Cannot remove homedir: %1$s\n" + msgstr "Kan de gebruikersmap niet verwijderen: %s\n" + + #: src/tools/sss_userdel.c:309 +@@ -1559,22 +1559,22 @@ msgstr "" + + #: src/tools/sss_cache.c:172 + #, c-format +-msgid "No such %s named %s, skipping\n" ++msgid "No such %1$s named %2$s, skipping\n" + msgstr "" + + #: src/tools/sss_cache.c:175 + #, c-format +-msgid "No objects of type %s in the cache, skipping\n" ++msgid "No objects of type %1$s in the cache, skipping\n" + msgstr "" + + #: src/tools/sss_cache.c:187 + #, c-format +-msgid "Couldn't invalidate %s" ++msgid "Couldn't invalidate %1$s" + msgstr "" + + #: src/tools/sss_cache.c:194 + #, c-format +-msgid "Couldn't invalidate %s %s" ++msgid "Couldn't invalidate %1$s %2$s" + msgstr "" + + #: src/tools/sss_cache.c:323 +@@ -1627,7 +1627,7 @@ msgstr "" + + #: src/tools/sss_cache.c:455 + #, c-format +-msgid "Could not open domain %s\n" ++msgid "Could not open domain %1$s\n" + msgstr "" + + #: src/tools/sss_cache.c:457 +@@ -1647,8 +1647,8 @@ msgid "Out of memory\n" + msgstr "Het geheugen zit vol\n" + + #: src/tools/tools_util.h:40 +-#, c-format +-msgid "%s must be run as root\n" ++#, fuzzy, c-format ++msgid "%1$s must be run as root\n" + msgstr "%s moet als root gestart worden\n" + + #: src/util/util.h:93 +diff --git a/po/pl.po b/po/pl.po +index f5ad70cae0811e0678ba1bb8b498507fe4954341..7c92af701b7e63f3154fc5ae11c9b06b619d2134 100644 +--- a/po/pl.po ++++ b/po/pl.po +@@ -9,7 +9,7 @@ msgid "" + msgstr "" + "Project-Id-Version: SSSD\n" + "Report-Msgid-Bugs-To: sssd-devel@lists.fedorahosted.org\n" +-"POT-Creation-Date: 2012-05-11 14:59-0400\n" ++"POT-Creation-Date: 2012-05-22 09:33-0400\n" + "PO-Revision-Date: 2012-04-20 16:09+0000\n" + "Last-Translator: Piotr Drąg \n" + "Language-Team: Polish (http://www.transifex.net/projects/p/fedora/language/" +@@ -190,7 +190,7 @@ msgstr "" + "zapytaniem dostawcy" + + #: src/config/SSSDConfig.py:88 +-msgid "Whether to hash host names and adresses in the known_hosts file" ++msgid "Whether to hash host names and addresses in the known_hosts file" + msgstr "" + + #: src/config/SSSDConfig.py:91 +@@ -1024,13 +1024,13 @@ msgid ", your cached password will expire at: " + msgstr ", hasło w pamięci podręcznej wygaśnie za: " + + #: src/sss_client/pam_sss.c:639 +-#, c-format +-msgid "Your password has expired. You have %d grace login(s) remaining." ++#, fuzzy, c-format ++msgid "Your password has expired. You have %1$d grace login(s) remaining." + msgstr "Hasło wygasło. Pozostało %d możliwych logowań." + + #: src/sss_client/pam_sss.c:685 +-#, c-format +-msgid "Your password will expire in %d %s." ++#, fuzzy, c-format ++msgid "Your password will expire in %1$d %2$s." + msgstr "Hasło wygaśnie za %d %s." + + #: src/sss_client/pam_sss.c:734 +@@ -1219,8 +1219,8 @@ msgid "Groups must be in the same domain as user\n" + msgstr "Grupy muszą być w tej samej domenie co użytkownik\n" + + #: src/tools/sss_useradd.c:153 +-#, c-format +-msgid "Cannot find group %s in local domain\n" ++#, fuzzy, c-format ++msgid "Cannot find group %1$s in local domain\n" + msgstr "Nie można odnaleźć grupy %s w lokalnej domenie\n" + + #: src/tools/sss_useradd.c:168 src/tools/sss_userdel.c:214 +@@ -1246,13 +1246,13 @@ msgstr "" + "zostaną skopiowane\n" + + #: src/tools/sss_useradd.c:232 +-#, c-format +-msgid "Cannot create user's home directory: %s\n" ++#, fuzzy, c-format ++msgid "Cannot create user's home directory: %1$s\n" + msgstr "Nie można utworzyć katalogu domowego użytkownika: %s\n" + + #: src/tools/sss_useradd.c:243 +-#, c-format +-msgid "Cannot create user's mail spool: %s\n" ++#, fuzzy, c-format ++msgid "Cannot create user's mail spool: %1$s\n" + msgstr "Nie można utworzyć buforu poczty użytkownika: %s\n" + + #: src/tools/sss_useradd.c:255 +@@ -1298,8 +1298,8 @@ msgid "Specify group to delete\n" + msgstr "Proszę podać grupę do usunięcia\n" + + #: src/tools/sss_groupdel.c:101 +-#, c-format +-msgid "Group %s is outside the defined ID range for domain\n" ++#, fuzzy, c-format ++msgid "Group %1$s is outside the defined ID range for domain\n" + msgstr "Grupa %s jest poza określonym zakresem identyfikatorów dla domeny\n" + + #: src/tools/sss_groupdel.c:115 +@@ -1344,9 +1344,9 @@ msgstr "Członkowie grupy muszą być w tej samej domenie co grupa nadrzędna\n" + + #: src/tools/sss_groupmod.c:155 src/tools/sss_groupmod.c:182 + #: src/tools/sss_usermod.c:176 src/tools/sss_usermod.c:203 +-#, c-format ++#, fuzzy, c-format + msgid "" +-"Cannot find group %s in local domain, only groups in local domain are " ++"Cannot find group %1$s in local domain, only groups in local domain are " + "allowed\n" + msgstr "" + "Nie można odnaleźć grupy %s w lokalnej domenie, tylko grupy w lokalnej " +@@ -1369,8 +1369,8 @@ msgid "Transaction error. Could not modify group.\n" + msgstr "Błąd transakcji. Nie można zmodyfikować grupy.\n" + + #: src/tools/sss_groupshow.c:562 +-#, c-format +-msgid "%s%sGroup: %s\n" ++#, fuzzy, c-format ++msgid "%1$s%2$sGroup: %3$s\n" + msgstr "%s%sGrupa: %s\n" + + #: src/tools/sss_groupshow.c:563 +@@ -1378,29 +1378,29 @@ msgid "Magic Private " + msgstr "Prywatne magic " + + #: src/tools/sss_groupshow.c:565 +-#, c-format +-msgid "%sGID number: %d\n" ++#, fuzzy, c-format ++msgid "%1$sGID number: %2$d\n" + msgstr "%sNumer GID: %d\n" + + #: src/tools/sss_groupshow.c:567 +-#, c-format +-msgid "%sMember users: " ++#, fuzzy, c-format ++msgid "%1$sMember users: " + msgstr "%sUżytkownicy będący członkami: " + + #: src/tools/sss_groupshow.c:574 +-#, c-format ++#, fuzzy, c-format + msgid "" + "\n" +-"%sIs a member of: " ++"%1$sIs a member of: " + msgstr "" + "\n" + "%sJest członkiem: " + + #: src/tools/sss_groupshow.c:581 +-#, c-format ++#, fuzzy, c-format + msgid "" + "\n" +-"%sMember groups: " ++"%1$sMember groups: " + msgstr "" + "\n" + "%sGrupy będące członkami: " +@@ -1446,8 +1446,8 @@ msgid "Specify user to delete\n" + msgstr "Proszę podać użytkownika do usunięcia\n" + + #: src/tools/sss_userdel.c:230 +-#, c-format +-msgid "User %s is outside the defined ID range for domain\n" ++#, fuzzy, c-format ++msgid "User %1$s is outside the defined ID range for domain\n" + msgstr "" + "Użytkownik %s jest poza określonym zakresem identyfikatorów dla domeny\n" + +@@ -1456,8 +1456,8 @@ msgid "Cannot reset SELinux login context\n" + msgstr "Nie można przywrócić kontekstu loginu SELinuksa\n" + + #: src/tools/sss_userdel.c:267 +-#, c-format +-msgid "WARNING: The user (uid %lu) was still logged in when deleted.\n" ++#, fuzzy, c-format ++msgid "WARNING: The user (uid %1$lu) was still logged in when deleted.\n" + msgstr "" + "OSTRZEŻENIE: użytkownik (UID %lu) był zalogowany podczas jego usunięcia.\n" + +@@ -1470,8 +1470,8 @@ msgid "Error while checking if the user was logged in\n" + msgstr "Błąd podczas sprawdzania, czy użytkownik był zalogowany\n" + + #: src/tools/sss_userdel.c:284 +-#, c-format +-msgid "The post-delete command failed: %s\n" ++#, fuzzy, c-format ++msgid "The post-delete command failed: %1$s\n" + msgstr "Polecenie po usunięciu nie powiodło się: %s\n" + + #: src/tools/sss_userdel.c:296 +@@ -1480,8 +1480,8 @@ msgstr "" + "Katalog domowy nie zostanie usunięty - użytkownik nie jest właścicielem\n" + + #: src/tools/sss_userdel.c:298 +-#, c-format +-msgid "Cannot remove homedir: %s\n" ++#, fuzzy, c-format ++msgid "Cannot remove homedir: %1$s\n" + msgstr "Nie można usunąć katalogu domowego: %s\n" + + #: src/tools/sss_userdel.c:309 +@@ -1549,22 +1549,22 @@ msgstr "" + + #: src/tools/sss_cache.c:172 + #, c-format +-msgid "No such %s named %s, skipping\n" ++msgid "No such %1$s named %2$s, skipping\n" + msgstr "" + + #: src/tools/sss_cache.c:175 + #, c-format +-msgid "No objects of type %s in the cache, skipping\n" ++msgid "No objects of type %1$s in the cache, skipping\n" + msgstr "" + + #: src/tools/sss_cache.c:187 +-#, c-format +-msgid "Couldn't invalidate %s" ++#, fuzzy, c-format ++msgid "Couldn't invalidate %1$s" + msgstr "Nie można unieważnić %s" + + #: src/tools/sss_cache.c:194 +-#, c-format +-msgid "Couldn't invalidate %s %s" ++#, fuzzy, c-format ++msgid "Couldn't invalidate %1$s %2$s" + msgstr "Nie można unieważnić %s %s" + + #: src/tools/sss_cache.c:323 +@@ -1621,7 +1621,7 @@ msgstr "" + + #: src/tools/sss_cache.c:455 + #, c-format +-msgid "Could not open domain %s\n" ++msgid "Could not open domain %1$s\n" + msgstr "" + + #: src/tools/sss_cache.c:457 +@@ -1641,8 +1641,8 @@ msgid "Out of memory\n" + msgstr "Brak pamięci\n" + + #: src/tools/tools_util.h:40 +-#, c-format +-msgid "%s must be run as root\n" ++#, fuzzy, c-format ++msgid "%1$s must be run as root\n" + msgstr "%s musi zostać uruchomione jako root\n" + + #: src/util/util.h:93 +diff --git a/po/pt.po b/po/pt.po +index db2d704f719ecfcda772816849e35515f5d124f6..6edc7dc103564e8510cde7e24ea38ed998f657a6 100644 +--- a/po/pt.po ++++ b/po/pt.po +@@ -7,7 +7,7 @@ msgid "" + msgstr "" + "Project-Id-Version: SSSD\n" + "Report-Msgid-Bugs-To: sssd-devel@lists.fedorahosted.org\n" +-"POT-Creation-Date: 2012-05-11 14:59-0400\n" ++"POT-Creation-Date: 2012-05-22 09:33-0400\n" + "PO-Revision-Date: 2012-04-20 16:09+0000\n" + "Last-Translator: sgallagh \n" + "Language-Team: Portuguese \n" +@@ -177,7 +177,7 @@ msgid "" + msgstr "" + + #: src/config/SSSDConfig.py:88 +-msgid "Whether to hash host names and adresses in the known_hosts file" ++msgid "Whether to hash host names and addresses in the known_hosts file" + msgstr "" + + #: src/config/SSSDConfig.py:91 +@@ -997,13 +997,13 @@ msgid ", your cached password will expire at: " + msgstr ", a sua senha guardada em cache irá expirar em: " + + #: src/sss_client/pam_sss.c:639 +-#, c-format +-msgid "Your password has expired. You have %d grace login(s) remaining." ++#, fuzzy, c-format ++msgid "Your password has expired. You have %1$d grace login(s) remaining." + msgstr "A sua senha expirou. Restam-lhe %d sessões de tolerância." + + #: src/sss_client/pam_sss.c:685 +-#, c-format +-msgid "Your password will expire in %d %s." ++#, fuzzy, c-format ++msgid "Your password will expire in %1$d %2$s." + msgstr "A sua senha irá expirar em %d %s." + + #: src/sss_client/pam_sss.c:734 +@@ -1192,8 +1192,8 @@ msgid "Groups must be in the same domain as user\n" + msgstr "Os grupos têm de pertencer ao mesmo domínio que o utilizador\n" + + #: src/tools/sss_useradd.c:153 +-#, c-format +-msgid "Cannot find group %s in local domain\n" ++#, fuzzy, c-format ++msgid "Cannot find group %1$s in local domain\n" + msgstr "Incapaz de encontrar o grupo %s no domínio local\n" + + #: src/tools/sss_useradd.c:168 src/tools/sss_userdel.c:214 +@@ -1218,13 +1218,13 @@ msgstr "" + "A pasta pessoal do utilizador já existe. Conteúdo skeldir não copiado\n" + + #: src/tools/sss_useradd.c:232 +-#, c-format +-msgid "Cannot create user's home directory: %s\n" ++#, fuzzy, c-format ++msgid "Cannot create user's home directory: %1$s\n" + msgstr "Incapaz de criar pasta pessoal do utilizador: %s\n" + + #: src/tools/sss_useradd.c:243 +-#, c-format +-msgid "Cannot create user's mail spool: %s\n" ++#, fuzzy, c-format ++msgid "Cannot create user's mail spool: %1$s\n" + msgstr "Incapaz de criar o ficheiro de correio do utilizador: %s\n" + + #: src/tools/sss_useradd.c:255 +@@ -1268,8 +1268,8 @@ msgid "Specify group to delete\n" + msgstr "Especifique grupo a remover\n" + + #: src/tools/sss_groupdel.c:101 +-#, c-format +-msgid "Group %s is outside the defined ID range for domain\n" ++#, fuzzy, c-format ++msgid "Group %1$s is outside the defined ID range for domain\n" + msgstr "O grupo %s está fora do intervalo de IDs para o domínio\n" + + #: src/tools/sss_groupdel.c:115 +@@ -1314,9 +1314,9 @@ msgstr "Grupos membro têm de estar no mesmo domínio do grupo pai\n" + + #: src/tools/sss_groupmod.c:155 src/tools/sss_groupmod.c:182 + #: src/tools/sss_usermod.c:176 src/tools/sss_usermod.c:203 +-#, c-format ++#, fuzzy, c-format + msgid "" +-"Cannot find group %s in local domain, only groups in local domain are " ++"Cannot find group %1$s in local domain, only groups in local domain are " + "allowed\n" + msgstr "" + "Grupo %s não foi encontrado no domínio local. Apenas são permitidos grupos " +@@ -1338,8 +1338,8 @@ msgid "Transaction error. Could not modify group.\n" + msgstr "Erro de transacção. Não foi possível modificar o grupo.\n" + + #: src/tools/sss_groupshow.c:562 +-#, c-format +-msgid "%s%sGroup: %s\n" ++#, fuzzy, c-format ++msgid "%1$s%2$sGroup: %3$s\n" + msgstr "%s%sGrupo: %s\n" + + #: src/tools/sss_groupshow.c:563 +@@ -1347,29 +1347,29 @@ msgid "Magic Private " + msgstr "\"Magic\" Privada" + + #: src/tools/sss_groupshow.c:565 +-#, c-format +-msgid "%sGID number: %d\n" ++#, fuzzy, c-format ++msgid "%1$sGID number: %2$d\n" + msgstr "%sNúmero GID: %d\n" + + #: src/tools/sss_groupshow.c:567 +-#, c-format +-msgid "%sMember users: " ++#, fuzzy, c-format ++msgid "%1$sMember users: " + msgstr "%sUtilizadores Membros: " + + #: src/tools/sss_groupshow.c:574 +-#, c-format ++#, fuzzy, c-format + msgid "" + "\n" +-"%sIs a member of: " ++"%1$sIs a member of: " + msgstr "" + "\n" + "%sIs um membro de: " + + #: src/tools/sss_groupshow.c:581 +-#, c-format ++#, fuzzy, c-format + msgid "" + "\n" +-"%sMember groups: " ++"%1$sMember groups: " + msgstr "" + "\n" + "%sGrupos Membros: " +@@ -1415,8 +1415,8 @@ msgid "Specify user to delete\n" + msgstr "Especificar o utilizador a remover\n" + + #: src/tools/sss_userdel.c:230 +-#, c-format +-msgid "User %s is outside the defined ID range for domain\n" ++#, fuzzy, c-format ++msgid "User %1$s is outside the defined ID range for domain\n" + msgstr "O utilizador %s está fora do intervalo de IDs para o domínio\n" + + #: src/tools/sss_userdel.c:255 +@@ -1424,8 +1424,8 @@ msgid "Cannot reset SELinux login context\n" + msgstr "Não foi possível redefinir o contexto SELinux para a sessão\n" + + #: src/tools/sss_userdel.c:267 +-#, c-format +-msgid "WARNING: The user (uid %lu) was still logged in when deleted.\n" ++#, fuzzy, c-format ++msgid "WARNING: The user (uid %1$lu) was still logged in when deleted.\n" + msgstr "" + "AVISO: O utilizador (uid %lu) ainda estava numa sessão quando foi removido.\n" + +@@ -1440,8 +1440,8 @@ msgid "Error while checking if the user was logged in\n" + msgstr "Erro ao verificar se o utilizador estava autenticado\n" + + #: src/tools/sss_userdel.c:284 +-#, c-format +-msgid "The post-delete command failed: %s\n" ++#, fuzzy, c-format ++msgid "The post-delete command failed: %1$s\n" + msgstr "O comando após-remoção falhou: %s\n" + + #: src/tools/sss_userdel.c:296 +@@ -1449,8 +1449,8 @@ msgid "Not removing home dir - not owned by user\n" + msgstr "Pasta pessoal não removida - não pertence ao utilizador\n" + + #: src/tools/sss_userdel.c:298 +-#, c-format +-msgid "Cannot remove homedir: %s\n" ++#, fuzzy, c-format ++msgid "Cannot remove homedir: %1$s\n" + msgstr "Incapaz de remover pasta pessoal: %s\n" + + #: src/tools/sss_userdel.c:309 +@@ -1516,22 +1516,22 @@ msgstr "" + + #: src/tools/sss_cache.c:172 + #, c-format +-msgid "No such %s named %s, skipping\n" ++msgid "No such %1$s named %2$s, skipping\n" + msgstr "" + + #: src/tools/sss_cache.c:175 + #, c-format +-msgid "No objects of type %s in the cache, skipping\n" ++msgid "No objects of type %1$s in the cache, skipping\n" + msgstr "" + + #: src/tools/sss_cache.c:187 + #, c-format +-msgid "Couldn't invalidate %s" ++msgid "Couldn't invalidate %1$s" + msgstr "" + + #: src/tools/sss_cache.c:194 + #, c-format +-msgid "Couldn't invalidate %s %s" ++msgid "Couldn't invalidate %1$s %2$s" + msgstr "" + + #: src/tools/sss_cache.c:323 +@@ -1584,7 +1584,7 @@ msgstr "" + + #: src/tools/sss_cache.c:455 + #, c-format +-msgid "Could not open domain %s\n" ++msgid "Could not open domain %1$s\n" + msgstr "" + + #: src/tools/sss_cache.c:457 +@@ -1604,8 +1604,8 @@ msgid "Out of memory\n" + msgstr "Memória esgotada\n" + + #: src/tools/tools_util.h:40 +-#, c-format +-msgid "%s must be run as root\n" ++#, fuzzy, c-format ++msgid "%1$s must be run as root\n" + msgstr "%s tem de executar como root\n" + + #: src/util/util.h:93 +diff --git a/po/ru.po b/po/ru.po +index 15abf7ccab6b83331057f5e3d13c4848253dde96..a37381f9cd51fd92d2acc575d88d32720b27c173 100644 +--- a/po/ru.po ++++ b/po/ru.po +@@ -7,7 +7,7 @@ msgid "" + msgstr "" + "Project-Id-Version: SSSD\n" + "Report-Msgid-Bugs-To: sssd-devel@lists.fedorahosted.org\n" +-"POT-Creation-Date: 2012-05-11 14:59-0400\n" ++"POT-Creation-Date: 2012-05-22 09:33-0400\n" + "PO-Revision-Date: 2012-04-20 16:09+0000\n" + "Last-Translator: sgallagh \n" + "Language-Team: Russian \n" +@@ -177,7 +177,7 @@ msgid "" + msgstr "" + + #: src/config/SSSDConfig.py:88 +-msgid "Whether to hash host names and adresses in the known_hosts file" ++msgid "Whether to hash host names and addresses in the known_hosts file" + msgstr "" + + #: src/config/SSSDConfig.py:91 +@@ -998,13 +998,13 @@ msgstr ", срок действия вашего кэшированного па + + #: src/sss_client/pam_sss.c:639 + #, c-format +-msgid "Your password has expired. You have %d grace login(s) remaining." ++msgid "Your password has expired. You have %1$d grace login(s) remaining." + msgstr "" + + #: src/sss_client/pam_sss.c:685 +-#, c-format +-msgid "Your password will expire in %d %s." +-msgstr "" ++#, fuzzy, c-format ++msgid "Your password will expire in %1$d %2$s." ++msgstr ", срок действия вашего кэшированного пароль истечёт:" + + #: src/sss_client/pam_sss.c:734 + msgid "Authentication is denied until: " +@@ -1192,8 +1192,8 @@ msgid "Groups must be in the same domain as user\n" + msgstr "Группы должны быть в том же домене, что и пользователь\n" + + #: src/tools/sss_useradd.c:153 +-#, c-format +-msgid "Cannot find group %s in local domain\n" ++#, fuzzy, c-format ++msgid "Cannot find group %1$s in local domain\n" + msgstr "Не удалось найти группу %s в локальном домене\n" + + #: src/tools/sss_useradd.c:168 src/tools/sss_userdel.c:214 +@@ -1219,13 +1219,13 @@ msgstr "" + "скелетной директории выполнено не будет\n" + + #: src/tools/sss_useradd.c:232 +-#, c-format +-msgid "Cannot create user's home directory: %s\n" ++#, fuzzy, c-format ++msgid "Cannot create user's home directory: %1$s\n" + msgstr "Не удалось создать домашний каталог пользователя: %s\n" + + #: src/tools/sss_useradd.c:243 +-#, c-format +-msgid "Cannot create user's mail spool: %s\n" ++#, fuzzy, c-format ++msgid "Cannot create user's mail spool: %1$s\n" + msgstr "Не удалось создать пользовательскую почтовую очередь: %s\n" + + #: src/tools/sss_useradd.c:255 +@@ -1269,8 +1269,8 @@ msgid "Specify group to delete\n" + msgstr "Укажите группу для удаления\n" + + #: src/tools/sss_groupdel.c:101 +-#, c-format +-msgid "Group %s is outside the defined ID range for domain\n" ++#, fuzzy, c-format ++msgid "Group %1$s is outside the defined ID range for domain\n" + msgstr "Группа %s находится вне назначенного для домена диапазона ID\n" + + #: src/tools/sss_groupdel.c:115 +@@ -1316,9 +1316,9 @@ msgstr "" + + #: src/tools/sss_groupmod.c:155 src/tools/sss_groupmod.c:182 + #: src/tools/sss_usermod.c:176 src/tools/sss_usermod.c:203 +-#, c-format ++#, fuzzy, c-format + msgid "" +-"Cannot find group %s in local domain, only groups in local domain are " ++"Cannot find group %1$s in local domain, only groups in local domain are " + "allowed\n" + msgstr "" + "Не удалось найти группу %s в локальном домене, разрешены только группы " +@@ -1338,8 +1338,8 @@ msgid "Transaction error. Could not modify group.\n" + msgstr "Ошибка в транзакции. Не удалось изменить группу.\n" + + #: src/tools/sss_groupshow.c:562 +-#, c-format +-msgid "%s%sGroup: %s\n" ++#, fuzzy, c-format ++msgid "%1$s%2$sGroup: %3$s\n" + msgstr "%s%sГруппа: %s\n" + + #: src/tools/sss_groupshow.c:563 +@@ -1347,27 +1347,29 @@ msgid "Magic Private " + msgstr "Magic Private" + + #: src/tools/sss_groupshow.c:565 +-#, c-format +-msgid "%sGID number: %d\n" ++#, fuzzy, c-format ++msgid "%1$sGID number: %2$d\n" + msgstr "%sНомер GID: %d\n" + + #: src/tools/sss_groupshow.c:567 +-#, c-format +-msgid "%sMember users: " ++#, fuzzy, c-format ++msgid "%1$sMember users: " + msgstr "%sПользователи: " + + #: src/tools/sss_groupshow.c:574 +-#, c-format ++#, fuzzy, c-format + msgid "" + "\n" +-"%sIs a member of: " ++"%1$sIs a member of: " + msgstr "" ++"\n" ++"%sГруппы-участники: " + + #: src/tools/sss_groupshow.c:581 +-#, c-format ++#, fuzzy, c-format + msgid "" + "\n" +-"%sMember groups: " ++"%1$sMember groups: " + msgstr "" + "\n" + "%sГруппы-участники: " +@@ -1413,8 +1415,8 @@ msgid "Specify user to delete\n" + msgstr "Укажите пользователя для удаления\n" + + #: src/tools/sss_userdel.c:230 +-#, c-format +-msgid "User %s is outside the defined ID range for domain\n" ++#, fuzzy, c-format ++msgid "User %1$s is outside the defined ID range for domain\n" + msgstr "Пользователь %s находится вне определённого диапазона ID для домена\n" + + #: src/tools/sss_userdel.c:255 +@@ -1423,7 +1425,7 @@ msgstr "" + + #: src/tools/sss_userdel.c:267 + #, c-format +-msgid "WARNING: The user (uid %lu) was still logged in when deleted.\n" ++msgid "WARNING: The user (uid %1$lu) was still logged in when deleted.\n" + msgstr "" + + #: src/tools/sss_userdel.c:272 +@@ -1436,7 +1438,7 @@ msgstr "" + + #: src/tools/sss_userdel.c:284 + #, c-format +-msgid "The post-delete command failed: %s\n" ++msgid "The post-delete command failed: %1$s\n" + msgstr "" + + #: src/tools/sss_userdel.c:296 +@@ -1445,8 +1447,8 @@ msgstr "" + "Домашняя директория не удалена — пользователь не является её владельцем\n" + + #: src/tools/sss_userdel.c:298 +-#, c-format +-msgid "Cannot remove homedir: %s\n" ++#, fuzzy, c-format ++msgid "Cannot remove homedir: %1$s\n" + msgstr "Не удалось удалить домашнюю директорию: %s\n" + + #: src/tools/sss_userdel.c:309 +@@ -1510,22 +1512,22 @@ msgstr "" + + #: src/tools/sss_cache.c:172 + #, c-format +-msgid "No such %s named %s, skipping\n" ++msgid "No such %1$s named %2$s, skipping\n" + msgstr "" + + #: src/tools/sss_cache.c:175 + #, c-format +-msgid "No objects of type %s in the cache, skipping\n" ++msgid "No objects of type %1$s in the cache, skipping\n" + msgstr "" + + #: src/tools/sss_cache.c:187 + #, c-format +-msgid "Couldn't invalidate %s" ++msgid "Couldn't invalidate %1$s" + msgstr "" + + #: src/tools/sss_cache.c:194 + #, c-format +-msgid "Couldn't invalidate %s %s" ++msgid "Couldn't invalidate %1$s %2$s" + msgstr "" + + #: src/tools/sss_cache.c:323 +@@ -1578,7 +1580,7 @@ msgstr "" + + #: src/tools/sss_cache.c:455 + #, c-format +-msgid "Could not open domain %s\n" ++msgid "Could not open domain %1$s\n" + msgstr "" + + #: src/tools/sss_cache.c:457 +@@ -1598,8 +1600,8 @@ msgid "Out of memory\n" + msgstr "Недостаточно памяти\n" + + #: src/tools/tools_util.h:40 +-#, c-format +-msgid "%s must be run as root\n" ++#, fuzzy, c-format ++msgid "%1$s must be run as root\n" + msgstr "%s должно выполняться от имени root\n" + + #: src/util/util.h:93 +diff --git a/po/sssd.pot b/po/sssd.pot +index 547053bb21bf829235998b9a4672d4fdd315773a..81da5586d0bf1fd534b52d9663d37882fdc140aa 100644 +--- a/po/sssd.pot ++++ b/po/sssd.pot +@@ -8,7 +8,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: sssd-devel@lists.fedorahosted.org\n" +-"POT-Creation-Date: 2012-05-11 14:59-0400\n" ++"POT-Creation-Date: 2012-05-22 09:33-0400\n" + "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" + "Last-Translator: FULL NAME \n" + "Language-Team: LANGUAGE \n" +@@ -172,7 +172,7 @@ msgid "" + msgstr "" + + #: src/config/SSSDConfig.py:88 +-msgid "Whether to hash host names and adresses in the known_hosts file" ++msgid "Whether to hash host names and addresses in the known_hosts file" + msgstr "" + + #: src/config/SSSDConfig.py:91 +@@ -986,12 +986,12 @@ msgstr "" + + #: src/sss_client/pam_sss.c:639 + #, c-format +-msgid "Your password has expired. You have %d grace login(s) remaining." ++msgid "Your password has expired. You have %1$d grace login(s) remaining." + msgstr "" + + #: src/sss_client/pam_sss.c:685 + #, c-format +-msgid "Your password will expire in %d %s." ++msgid "Your password will expire in %1$d %2$s." + msgstr "" + + #: src/sss_client/pam_sss.c:734 +@@ -1181,7 +1181,7 @@ msgstr "" + + #: src/tools/sss_useradd.c:153 + #, c-format +-msgid "Cannot find group %s in local domain\n" ++msgid "Cannot find group %1$s in local domain\n" + msgstr "" + + #: src/tools/sss_useradd.c:168 src/tools/sss_userdel.c:214 +@@ -1206,12 +1206,12 @@ msgstr "" + + #: src/tools/sss_useradd.c:232 + #, c-format +-msgid "Cannot create user's home directory: %s\n" ++msgid "Cannot create user's home directory: %1$s\n" + msgstr "" + + #: src/tools/sss_useradd.c:243 + #, c-format +-msgid "Cannot create user's mail spool: %s\n" ++msgid "Cannot create user's mail spool: %1$s\n" + msgstr "" + + #: src/tools/sss_useradd.c:255 +@@ -1256,7 +1256,7 @@ msgstr "" + + #: src/tools/sss_groupdel.c:101 + #, c-format +-msgid "Group %s is outside the defined ID range for domain\n" ++msgid "Group %1$s is outside the defined ID range for domain\n" + msgstr "" + + #: src/tools/sss_groupdel.c:115 +@@ -1299,7 +1299,7 @@ msgstr "" + #: src/tools/sss_usermod.c:176 src/tools/sss_usermod.c:203 + #, c-format + msgid "" +-"Cannot find group %s in local domain, only groups in local domain are " ++"Cannot find group %1$s in local domain, only groups in local domain are " + "allowed\n" + msgstr "" + +@@ -1317,7 +1317,7 @@ msgstr "" + + #: src/tools/sss_groupshow.c:562 + #, c-format +-msgid "%s%sGroup: %s\n" ++msgid "%1$s%2$sGroup: %3$s\n" + msgstr "" + + #: src/tools/sss_groupshow.c:563 +@@ -1326,26 +1326,26 @@ msgstr "" + + #: src/tools/sss_groupshow.c:565 + #, c-format +-msgid "%sGID number: %d\n" ++msgid "%1$sGID number: %2$d\n" + msgstr "" + + #: src/tools/sss_groupshow.c:567 + #, c-format +-msgid "%sMember users: " ++msgid "%1$sMember users: " + msgstr "" + + #: src/tools/sss_groupshow.c:574 + #, c-format + msgid "" + "\n" +-"%sIs a member of: " ++"%1$sIs a member of: " + msgstr "" + + #: src/tools/sss_groupshow.c:581 + #, c-format + msgid "" + "\n" +-"%sMember groups: " ++"%1$sMember groups: " + msgstr "" + + #: src/tools/sss_groupshow.c:617 +@@ -1388,7 +1388,7 @@ msgstr "" + + #: src/tools/sss_userdel.c:230 + #, c-format +-msgid "User %s is outside the defined ID range for domain\n" ++msgid "User %1$s is outside the defined ID range for domain\n" + msgstr "" + + #: src/tools/sss_userdel.c:255 +@@ -1397,7 +1397,7 @@ msgstr "" + + #: src/tools/sss_userdel.c:267 + #, c-format +-msgid "WARNING: The user (uid %lu) was still logged in when deleted.\n" ++msgid "WARNING: The user (uid %1$lu) was still logged in when deleted.\n" + msgstr "" + + #: src/tools/sss_userdel.c:272 +@@ -1410,7 +1410,7 @@ msgstr "" + + #: src/tools/sss_userdel.c:284 + #, c-format +-msgid "The post-delete command failed: %s\n" ++msgid "The post-delete command failed: %1$s\n" + msgstr "" + + #: src/tools/sss_userdel.c:296 +@@ -1419,7 +1419,7 @@ msgstr "" + + #: src/tools/sss_userdel.c:298 + #, c-format +-msgid "Cannot remove homedir: %s\n" ++msgid "Cannot remove homedir: %1$s\n" + msgstr "" + + #: src/tools/sss_userdel.c:309 +@@ -1479,22 +1479,22 @@ msgstr "" + + #: src/tools/sss_cache.c:172 + #, c-format +-msgid "No such %s named %s, skipping\n" ++msgid "No such %1$s named %2$s, skipping\n" + msgstr "" + + #: src/tools/sss_cache.c:175 + #, c-format +-msgid "No objects of type %s in the cache, skipping\n" ++msgid "No objects of type %1$s in the cache, skipping\n" + msgstr "" + + #: src/tools/sss_cache.c:187 + #, c-format +-msgid "Couldn't invalidate %s" ++msgid "Couldn't invalidate %1$s" + msgstr "" + + #: src/tools/sss_cache.c:194 + #, c-format +-msgid "Couldn't invalidate %s %s" ++msgid "Couldn't invalidate %1$s %2$s" + msgstr "" + + #: src/tools/sss_cache.c:323 +@@ -1547,7 +1547,7 @@ msgstr "" + + #: src/tools/sss_cache.c:455 + #, c-format +-msgid "Could not open domain %s\n" ++msgid "Could not open domain %1$s\n" + msgstr "" + + #: src/tools/sss_cache.c:457 +@@ -1568,7 +1568,7 @@ msgstr "" + + #: src/tools/tools_util.h:40 + #, c-format +-msgid "%s must be run as root\n" ++msgid "%1$s must be run as root\n" + msgstr "" + + #: src/util/util.h:93 +diff --git a/po/sv.po b/po/sv.po +index 1a3356580f4b51c1ce87a02d9b187362beeda756..eb75edbe1907067215a1bbe57705d4cf8bc457f6 100644 +--- a/po/sv.po ++++ b/po/sv.po +@@ -7,7 +7,7 @@ msgid "" + msgstr "" + "Project-Id-Version: SSSD\n" + "Report-Msgid-Bugs-To: sssd-devel@lists.fedorahosted.org\n" +-"POT-Creation-Date: 2012-05-11 14:59-0400\n" ++"POT-Creation-Date: 2012-05-22 09:33-0400\n" + "PO-Revision-Date: 2012-04-20 16:09+0000\n" + "Last-Translator: sgallagh \n" + "Language-Team: Swedish (http://www.transifex.net/projects/p/fedora/language/" +@@ -174,7 +174,7 @@ msgid "" + msgstr "" + + #: src/config/SSSDConfig.py:88 +-msgid "Whether to hash host names and adresses in the known_hosts file" ++msgid "Whether to hash host names and addresses in the known_hosts file" + msgstr "" + + #: src/config/SSSDConfig.py:91 +@@ -989,12 +989,12 @@ msgstr "" + + #: src/sss_client/pam_sss.c:639 + #, c-format +-msgid "Your password has expired. You have %d grace login(s) remaining." ++msgid "Your password has expired. You have %1$d grace login(s) remaining." + msgstr "" + + #: src/sss_client/pam_sss.c:685 + #, c-format +-msgid "Your password will expire in %d %s." ++msgid "Your password will expire in %1$d %2$s." + msgstr "" + + #: src/sss_client/pam_sss.c:734 +@@ -1183,8 +1183,8 @@ msgid "Groups must be in the same domain as user\n" + msgstr "Grupper måste finnas i samma domän som användaren\n" + + #: src/tools/sss_useradd.c:153 +-#, c-format +-msgid "Cannot find group %s in local domain\n" ++#, fuzzy, c-format ++msgid "Cannot find group %1$s in local domain\n" + msgstr "Hittar inte grupp %s i den lokala domänen\n" + + #: src/tools/sss_useradd.c:168 src/tools/sss_userdel.c:214 +@@ -1210,13 +1210,13 @@ msgstr "" + "skelettkatalogen\n" + + #: src/tools/sss_useradd.c:232 +-#, c-format +-msgid "Cannot create user's home directory: %s\n" ++#, fuzzy, c-format ++msgid "Cannot create user's home directory: %1$s\n" + msgstr "Kan inte skapa användarens hemkatalog: %s\n" + + #: src/tools/sss_useradd.c:243 +-#, c-format +-msgid "Cannot create user's mail spool: %s\n" ++#, fuzzy, c-format ++msgid "Cannot create user's mail spool: %1$s\n" + msgstr "Kan inte skapa användarens brevlåda: %s\n" + + #: src/tools/sss_useradd.c:255 +@@ -1260,8 +1260,8 @@ msgid "Specify group to delete\n" + msgstr "Ange grupp att ta bort\n" + + #: src/tools/sss_groupdel.c:101 +-#, c-format +-msgid "Group %s is outside the defined ID range for domain\n" ++#, fuzzy, c-format ++msgid "Group %1$s is outside the defined ID range for domain\n" + msgstr "Grupp %s är utanför det definierade ID-intervallet för domänen\n" + + #: src/tools/sss_groupdel.c:115 +@@ -1306,9 +1306,9 @@ msgstr "Medlemsgrupper måster ligga i samma domän som föräldragrupper\n" + + #: src/tools/sss_groupmod.c:155 src/tools/sss_groupmod.c:182 + #: src/tools/sss_usermod.c:176 src/tools/sss_usermod.c:203 +-#, c-format ++#, fuzzy, c-format + msgid "" +-"Cannot find group %s in local domain, only groups in local domain are " ++"Cannot find group %1$s in local domain, only groups in local domain are " + "allowed\n" + msgstr "" + "Kan inte hitta grupp %s i den lokala domänen, endast grupper i den lokala " +@@ -1331,7 +1331,7 @@ msgstr "Transaktionsfel. Det gick inte att ändra gruppen.\n" + + #: src/tools/sss_groupshow.c:562 + #, c-format +-msgid "%s%sGroup: %s\n" ++msgid "%1$s%2$sGroup: %3$s\n" + msgstr "" + + #: src/tools/sss_groupshow.c:563 +@@ -1340,26 +1340,26 @@ msgstr "" + + #: src/tools/sss_groupshow.c:565 + #, c-format +-msgid "%sGID number: %d\n" ++msgid "%1$sGID number: %2$d\n" + msgstr "" + + #: src/tools/sss_groupshow.c:567 + #, c-format +-msgid "%sMember users: " ++msgid "%1$sMember users: " + msgstr "" + + #: src/tools/sss_groupshow.c:574 + #, c-format + msgid "" + "\n" +-"%sIs a member of: " ++"%1$sIs a member of: " + msgstr "" + + #: src/tools/sss_groupshow.c:581 + #, c-format + msgid "" + "\n" +-"%sMember groups: " ++"%1$sMember groups: " + msgstr "" + + #: src/tools/sss_groupshow.c:617 +@@ -1401,8 +1401,8 @@ msgid "Specify user to delete\n" + msgstr "Ange användare att ta bort\n" + + #: src/tools/sss_userdel.c:230 +-#, c-format +-msgid "User %s is outside the defined ID range for domain\n" ++#, fuzzy, c-format ++msgid "User %1$s is outside the defined ID range for domain\n" + msgstr "Användare %s är utanför det definierade ID-intervallet för domänen\n" + + #: src/tools/sss_userdel.c:255 +@@ -1411,7 +1411,7 @@ msgstr "" + + #: src/tools/sss_userdel.c:267 + #, c-format +-msgid "WARNING: The user (uid %lu) was still logged in when deleted.\n" ++msgid "WARNING: The user (uid %1$lu) was still logged in when deleted.\n" + msgstr "" + + #: src/tools/sss_userdel.c:272 +@@ -1424,7 +1424,7 @@ msgstr "" + + #: src/tools/sss_userdel.c:284 + #, c-format +-msgid "The post-delete command failed: %s\n" ++msgid "The post-delete command failed: %1$s\n" + msgstr "" + + #: src/tools/sss_userdel.c:296 +@@ -1432,8 +1432,8 @@ msgid "Not removing home dir - not owned by user\n" + msgstr "Tar inte bort hemkatalogen - ägs inte av användaren\n" + + #: src/tools/sss_userdel.c:298 +-#, c-format +-msgid "Cannot remove homedir: %s\n" ++#, fuzzy, c-format ++msgid "Cannot remove homedir: %1$s\n" + msgstr "Kan inte ta bort hemkatalogen: %s\n" + + #: src/tools/sss_userdel.c:309 +@@ -1499,22 +1499,22 @@ msgstr "" + + #: src/tools/sss_cache.c:172 + #, c-format +-msgid "No such %s named %s, skipping\n" ++msgid "No such %1$s named %2$s, skipping\n" + msgstr "" + + #: src/tools/sss_cache.c:175 + #, c-format +-msgid "No objects of type %s in the cache, skipping\n" ++msgid "No objects of type %1$s in the cache, skipping\n" + msgstr "" + + #: src/tools/sss_cache.c:187 + #, c-format +-msgid "Couldn't invalidate %s" ++msgid "Couldn't invalidate %1$s" + msgstr "" + + #: src/tools/sss_cache.c:194 + #, c-format +-msgid "Couldn't invalidate %s %s" ++msgid "Couldn't invalidate %1$s %2$s" + msgstr "" + + #: src/tools/sss_cache.c:323 +@@ -1567,7 +1567,7 @@ msgstr "" + + #: src/tools/sss_cache.c:455 + #, c-format +-msgid "Could not open domain %s\n" ++msgid "Could not open domain %1$s\n" + msgstr "" + + #: src/tools/sss_cache.c:457 +@@ -1587,8 +1587,8 @@ msgid "Out of memory\n" + msgstr "Slut på minne\n" + + #: src/tools/tools_util.h:40 +-#, c-format +-msgid "%s must be run as root\n" ++#, fuzzy, c-format ++msgid "%1$s must be run as root\n" + msgstr "%s måste köras som root\n" + + #: src/util/util.h:93 +diff --git a/po/tg.po b/po/tg.po +index 037ecf3e99127ba6bf1aa24551779f7286b7240b..d45ecfe3a0a9fe5040f57f9d6c0994fae1f56870 100644 +--- a/po/tg.po ++++ b/po/tg.po +@@ -7,7 +7,7 @@ msgid "" + msgstr "" + "Project-Id-Version: SSSD\n" + "Report-Msgid-Bugs-To: sssd-devel@lists.fedorahosted.org\n" +-"POT-Creation-Date: 2012-05-11 14:59-0400\n" ++"POT-Creation-Date: 2012-05-22 09:33-0400\n" + "PO-Revision-Date: 2012-04-20 16:09+0000\n" + "Last-Translator: sgallagh \n" + "Language-Team: Tajik (http://www.transifex.net/projects/p/fedora/language/" +@@ -173,7 +173,7 @@ msgid "" + msgstr "" + + #: src/config/SSSDConfig.py:88 +-msgid "Whether to hash host names and adresses in the known_hosts file" ++msgid "Whether to hash host names and addresses in the known_hosts file" + msgstr "" + + #: src/config/SSSDConfig.py:91 +@@ -988,12 +988,12 @@ msgstr "" + + #: src/sss_client/pam_sss.c:639 + #, c-format +-msgid "Your password has expired. You have %d grace login(s) remaining." ++msgid "Your password has expired. You have %1$d grace login(s) remaining." + msgstr "" + + #: src/sss_client/pam_sss.c:685 + #, c-format +-msgid "Your password will expire in %d %s." ++msgid "Your password will expire in %1$d %2$s." + msgstr "" + + #: src/sss_client/pam_sss.c:734 +@@ -1183,7 +1183,7 @@ msgstr "" + + #: src/tools/sss_useradd.c:153 + #, c-format +-msgid "Cannot find group %s in local domain\n" ++msgid "Cannot find group %1$s in local domain\n" + msgstr "" + + #: src/tools/sss_useradd.c:168 src/tools/sss_userdel.c:214 +@@ -1208,12 +1208,12 @@ msgstr "" + + #: src/tools/sss_useradd.c:232 + #, c-format +-msgid "Cannot create user's home directory: %s\n" ++msgid "Cannot create user's home directory: %1$s\n" + msgstr "" + + #: src/tools/sss_useradd.c:243 + #, c-format +-msgid "Cannot create user's mail spool: %s\n" ++msgid "Cannot create user's mail spool: %1$s\n" + msgstr "" + + #: src/tools/sss_useradd.c:255 +@@ -1258,7 +1258,7 @@ msgstr "" + + #: src/tools/sss_groupdel.c:101 + #, c-format +-msgid "Group %s is outside the defined ID range for domain\n" ++msgid "Group %1$s is outside the defined ID range for domain\n" + msgstr "" + + #: src/tools/sss_groupdel.c:115 +@@ -1301,7 +1301,7 @@ msgstr "" + #: src/tools/sss_usermod.c:176 src/tools/sss_usermod.c:203 + #, c-format + msgid "" +-"Cannot find group %s in local domain, only groups in local domain are " ++"Cannot find group %1$s in local domain, only groups in local domain are " + "allowed\n" + msgstr "" + +@@ -1319,7 +1319,7 @@ msgstr "" + + #: src/tools/sss_groupshow.c:562 + #, c-format +-msgid "%s%sGroup: %s\n" ++msgid "%1$s%2$sGroup: %3$s\n" + msgstr "" + + #: src/tools/sss_groupshow.c:563 +@@ -1328,26 +1328,26 @@ msgstr "" + + #: src/tools/sss_groupshow.c:565 + #, c-format +-msgid "%sGID number: %d\n" ++msgid "%1$sGID number: %2$d\n" + msgstr "" + + #: src/tools/sss_groupshow.c:567 + #, c-format +-msgid "%sMember users: " ++msgid "%1$sMember users: " + msgstr "" + + #: src/tools/sss_groupshow.c:574 + #, c-format + msgid "" + "\n" +-"%sIs a member of: " ++"%1$sIs a member of: " + msgstr "" + + #: src/tools/sss_groupshow.c:581 + #, c-format + msgid "" + "\n" +-"%sMember groups: " ++"%1$sMember groups: " + msgstr "" + + #: src/tools/sss_groupshow.c:617 +@@ -1390,7 +1390,7 @@ msgstr "" + + #: src/tools/sss_userdel.c:230 + #, c-format +-msgid "User %s is outside the defined ID range for domain\n" ++msgid "User %1$s is outside the defined ID range for domain\n" + msgstr "" + + #: src/tools/sss_userdel.c:255 +@@ -1399,7 +1399,7 @@ msgstr "" + + #: src/tools/sss_userdel.c:267 + #, c-format +-msgid "WARNING: The user (uid %lu) was still logged in when deleted.\n" ++msgid "WARNING: The user (uid %1$lu) was still logged in when deleted.\n" + msgstr "" + + #: src/tools/sss_userdel.c:272 +@@ -1412,7 +1412,7 @@ msgstr "" + + #: src/tools/sss_userdel.c:284 + #, c-format +-msgid "The post-delete command failed: %s\n" ++msgid "The post-delete command failed: %1$s\n" + msgstr "" + + #: src/tools/sss_userdel.c:296 +@@ -1421,7 +1421,7 @@ msgstr "" + + #: src/tools/sss_userdel.c:298 + #, c-format +-msgid "Cannot remove homedir: %s\n" ++msgid "Cannot remove homedir: %1$s\n" + msgstr "" + + #: src/tools/sss_userdel.c:309 +@@ -1481,22 +1481,22 @@ msgstr "" + + #: src/tools/sss_cache.c:172 + #, c-format +-msgid "No such %s named %s, skipping\n" ++msgid "No such %1$s named %2$s, skipping\n" + msgstr "" + + #: src/tools/sss_cache.c:175 + #, c-format +-msgid "No objects of type %s in the cache, skipping\n" ++msgid "No objects of type %1$s in the cache, skipping\n" + msgstr "" + + #: src/tools/sss_cache.c:187 + #, c-format +-msgid "Couldn't invalidate %s" ++msgid "Couldn't invalidate %1$s" + msgstr "" + + #: src/tools/sss_cache.c:194 + #, c-format +-msgid "Couldn't invalidate %s %s" ++msgid "Couldn't invalidate %1$s %2$s" + msgstr "" + + #: src/tools/sss_cache.c:323 +@@ -1549,7 +1549,7 @@ msgstr "" + + #: src/tools/sss_cache.c:455 + #, c-format +-msgid "Could not open domain %s\n" ++msgid "Could not open domain %1$s\n" + msgstr "" + + #: src/tools/sss_cache.c:457 +@@ -1570,7 +1570,7 @@ msgstr "Берун аз хотира\n" + + #: src/tools/tools_util.h:40 + #, c-format +-msgid "%s must be run as root\n" ++msgid "%1$s must be run as root\n" + msgstr "" + + #: src/util/util.h:93 +diff --git a/po/uk.po b/po/uk.po +index f100049cc1049e13c529fcc9e45e98803c600e8f..9c210ed4219368b3399bfbe75ed687d07b40f8a3 100644 +--- a/po/uk.po ++++ b/po/uk.po +@@ -9,7 +9,7 @@ msgid "" + msgstr "" + "Project-Id-Version: SSSD\n" + "Report-Msgid-Bugs-To: sssd-devel@lists.fedorahosted.org\n" +-"POT-Creation-Date: 2012-05-11 14:59-0400\n" ++"POT-Creation-Date: 2012-05-22 09:33-0400\n" + "PO-Revision-Date: 2012-04-20 16:09+0000\n" + "Last-Translator: Yuri Chornoivan \n" + "Language-Team: Ukrainian \n" +@@ -196,7 +196,7 @@ msgstr "" + "запит до служби буде надіслано знову." + + #: src/config/SSSDConfig.py:88 +-msgid "Whether to hash host names and adresses in the known_hosts file" ++msgid "Whether to hash host names and addresses in the known_hosts file" + msgstr "" + + #: src/config/SSSDConfig.py:91 +@@ -1038,13 +1038,13 @@ msgid ", your cached password will expire at: " + msgstr ", строк дії вашого кешованого пароля завершиться: " + + #: src/sss_client/pam_sss.c:639 +-#, c-format +-msgid "Your password has expired. You have %d grace login(s) remaining." ++#, fuzzy, c-format ++msgid "Your password has expired. You have %1$d grace login(s) remaining." + msgstr "Строк дії вашого пароля вичерпано. Залишилося %d резервних входи." + + #: src/sss_client/pam_sss.c:685 +-#, c-format +-msgid "Your password will expire in %d %s." ++#, fuzzy, c-format ++msgid "Your password will expire in %1$d %2$s." + msgstr "Строк дії вашого пароля завершиться за %d %s." + + #: src/sss_client/pam_sss.c:734 +@@ -1233,8 +1233,8 @@ msgid "Groups must be in the same domain as user\n" + msgstr "Групи мають належати до того самого домену, що і користувач\n" + + #: src/tools/sss_useradd.c:153 +-#, c-format +-msgid "Cannot find group %s in local domain\n" ++#, fuzzy, c-format ++msgid "Cannot find group %1$s in local domain\n" + msgstr "Не вдалося знайти групу %s у локальному домені\n" + + #: src/tools/sss_useradd.c:168 src/tools/sss_userdel.c:214 +@@ -1261,13 +1261,13 @@ msgstr "" + "виконуватиметься\n" + + #: src/tools/sss_useradd.c:232 +-#, c-format +-msgid "Cannot create user's home directory: %s\n" ++#, fuzzy, c-format ++msgid "Cannot create user's home directory: %1$s\n" + msgstr "Не вдалося створити домашній каталог користувача: %s\n" + + #: src/tools/sss_useradd.c:243 +-#, c-format +-msgid "Cannot create user's mail spool: %s\n" ++#, fuzzy, c-format ++msgid "Cannot create user's mail spool: %1$s\n" + msgstr "Не вдалося створити поштовий буфер користувача: %s\n" + + #: src/tools/sss_useradd.c:255 +@@ -1314,8 +1314,8 @@ msgid "Specify group to delete\n" + msgstr "Вкажіть групу, яку слід вилучити\n" + + #: src/tools/sss_groupdel.c:101 +-#, c-format +-msgid "Group %s is outside the defined ID range for domain\n" ++#, fuzzy, c-format ++msgid "Group %1$s is outside the defined ID range for domain\n" + msgstr "Група %s не належить визначеному діапазону ідентифікаторів домену\n" + + #: src/tools/sss_groupdel.c:115 +@@ -1361,9 +1361,9 @@ msgstr "" + + #: src/tools/sss_groupmod.c:155 src/tools/sss_groupmod.c:182 + #: src/tools/sss_usermod.c:176 src/tools/sss_usermod.c:203 +-#, c-format ++#, fuzzy, c-format + msgid "" +-"Cannot find group %s in local domain, only groups in local domain are " ++"Cannot find group %1$s in local domain, only groups in local domain are " + "allowed\n" + msgstr "" + "Не вдалося знайти групу %s у локальному домені, можна використовувати лише " +@@ -1385,8 +1385,8 @@ msgid "Transaction error. Could not modify group.\n" + msgstr "Помилка під час виконання операції Не вдалося змінити групу.\n" + + #: src/tools/sss_groupshow.c:562 +-#, c-format +-msgid "%s%sGroup: %s\n" ++#, fuzzy, c-format ++msgid "%1$s%2$sGroup: %3$s\n" + msgstr "%s%sГрупа: %s\n" + + #: src/tools/sss_groupshow.c:563 +@@ -1394,29 +1394,29 @@ msgid "Magic Private " + msgstr "Магічна приватна " + + #: src/tools/sss_groupshow.c:565 +-#, c-format +-msgid "%sGID number: %d\n" ++#, fuzzy, c-format ++msgid "%1$sGID number: %2$d\n" + msgstr "%sНомер GID: %d\n" + + #: src/tools/sss_groupshow.c:567 +-#, c-format +-msgid "%sMember users: " ++#, fuzzy, c-format ++msgid "%1$sMember users: " + msgstr "%sКористувачі-учасники: " + + #: src/tools/sss_groupshow.c:574 +-#, c-format ++#, fuzzy, c-format + msgid "" + "\n" +-"%sIs a member of: " ++"%1$sIs a member of: " + msgstr "" + "\n" + "%sє учасником: " + + #: src/tools/sss_groupshow.c:581 +-#, c-format ++#, fuzzy, c-format + msgid "" + "\n" +-"%sMember groups: " ++"%1$sMember groups: " + msgstr "" + "\n" + "%sГрупи-учасники: " +@@ -1462,8 +1462,8 @@ msgid "Specify user to delete\n" + msgstr "Вкажіть користувача, запис якого слід вилучити\n" + + #: src/tools/sss_userdel.c:230 +-#, c-format +-msgid "User %s is outside the defined ID range for domain\n" ++#, fuzzy, c-format ++msgid "User %1$s is outside the defined ID range for domain\n" + msgstr "" + "Користувач %s не належить визначеному діапазону ідентифікаторів домену\n" + +@@ -1472,8 +1472,8 @@ msgid "Cannot reset SELinux login context\n" + msgstr "Не вдалося відновити початковий контекст входу SELinux\n" + + #: src/tools/sss_userdel.c:267 +-#, c-format +-msgid "WARNING: The user (uid %lu) was still logged in when deleted.\n" ++#, fuzzy, c-format ++msgid "WARNING: The user (uid %1$lu) was still logged in when deleted.\n" + msgstr "" + "ПОПЕРЕДЖЕННЯ: користувач (uid %lu) все ще працював у системі на час " + "вилучення його запису.\n" +@@ -1488,8 +1488,8 @@ msgid "Error while checking if the user was logged in\n" + msgstr "Помилка під час перевірки входу користувача до системи\n" + + #: src/tools/sss_userdel.c:284 +-#, c-format +-msgid "The post-delete command failed: %s\n" ++#, fuzzy, c-format ++msgid "The post-delete command failed: %1$s\n" + msgstr "Помилка команди, яку слід було виконати після вилучення запису: %s\n" + + #: src/tools/sss_userdel.c:296 +@@ -1497,8 +1497,8 @@ msgid "Not removing home dir - not owned by user\n" + msgstr "Домашній каталог не буде вилучено. Він не належить користувачеві.\n" + + #: src/tools/sss_userdel.c:298 +-#, c-format +-msgid "Cannot remove homedir: %s\n" ++#, fuzzy, c-format ++msgid "Cannot remove homedir: %1$s\n" + msgstr "Не вдалося вилучити домашній каталог: %s\n" + + #: src/tools/sss_userdel.c:309 +@@ -1566,22 +1566,22 @@ msgstr "" + + #: src/tools/sss_cache.c:172 + #, c-format +-msgid "No such %s named %s, skipping\n" ++msgid "No such %1$s named %2$s, skipping\n" + msgstr "" + + #: src/tools/sss_cache.c:175 + #, c-format +-msgid "No objects of type %s in the cache, skipping\n" ++msgid "No objects of type %1$s in the cache, skipping\n" + msgstr "" + + #: src/tools/sss_cache.c:187 +-#, c-format +-msgid "Couldn't invalidate %s" ++#, fuzzy, c-format ++msgid "Couldn't invalidate %1$s" + msgstr "Не вдалося скасувати визначення %s" + + #: src/tools/sss_cache.c:194 +-#, c-format +-msgid "Couldn't invalidate %s %s" ++#, fuzzy, c-format ++msgid "Couldn't invalidate %1$s %2$s" + msgstr "Не вдалося скасувати визначення %s %s" + + #: src/tools/sss_cache.c:323 +@@ -1638,7 +1638,7 @@ msgstr "" + + #: src/tools/sss_cache.c:455 + #, c-format +-msgid "Could not open domain %s\n" ++msgid "Could not open domain %1$s\n" + msgstr "" + + #: src/tools/sss_cache.c:457 +@@ -1658,8 +1658,8 @@ msgid "Out of memory\n" + msgstr "Не вистачає пам'яті\n" + + #: src/tools/tools_util.h:40 +-#, c-format +-msgid "%s must be run as root\n" ++#, fuzzy, c-format ++msgid "%1$s must be run as root\n" + msgstr "%s слід виконувати від імені користувача root\n" + + #: src/util/util.h:93 +diff --git a/po/zh_TW.po b/po/zh_TW.po +index 7c253a4a41a92fc997bb3dfd7247d5fca1c54335..8b981465fab13c91e8e3c062f909eabced5ff36e 100644 +--- a/po/zh_TW.po ++++ b/po/zh_TW.po +@@ -7,7 +7,7 @@ msgid "" + msgstr "" + "Project-Id-Version: SSSD\n" + "Report-Msgid-Bugs-To: sssd-devel@lists.fedorahosted.org\n" +-"POT-Creation-Date: 2012-05-11 14:59-0400\n" ++"POT-Creation-Date: 2012-05-22 09:33-0400\n" + "PO-Revision-Date: 2012-04-20 16:09+0000\n" + "Last-Translator: sgallagh \n" + "Language-Team: Chinese (Taiwan) \n" +@@ -172,7 +172,7 @@ msgid "" + msgstr "" + + #: src/config/SSSDConfig.py:88 +-msgid "Whether to hash host names and adresses in the known_hosts file" ++msgid "Whether to hash host names and addresses in the known_hosts file" + msgstr "" + + #: src/config/SSSDConfig.py:91 +@@ -986,13 +986,13 @@ msgstr ",您快取的密碼將在此刻過期:" + + #: src/sss_client/pam_sss.c:639 + #, c-format +-msgid "Your password has expired. You have %d grace login(s) remaining." ++msgid "Your password has expired. You have %1$d grace login(s) remaining." + msgstr "" + + #: src/sss_client/pam_sss.c:685 +-#, c-format +-msgid "Your password will expire in %d %s." +-msgstr "" ++#, fuzzy, c-format ++msgid "Your password will expire in %1$d %2$s." ++msgstr ",您快取的密碼將在此刻過期:" + + #: src/sss_client/pam_sss.c:734 + msgid "Authentication is denied until: " +@@ -1180,8 +1180,8 @@ msgid "Groups must be in the same domain as user\n" + msgstr "群組必須位於與使用者相同的網域內\n" + + #: src/tools/sss_useradd.c:153 +-#, c-format +-msgid "Cannot find group %s in local domain\n" ++#, fuzzy, c-format ++msgid "Cannot find group %1$s in local domain\n" + msgstr "在本機網域內找不到 %s 群組\n" + + #: src/tools/sss_useradd.c:168 src/tools/sss_userdel.c:214 +@@ -1205,13 +1205,13 @@ msgid "User's home directory already exists, not copying data from skeldir\n" + msgstr "使用者的家目錄已經存在,不會從骨幹目錄複製資料\n" + + #: src/tools/sss_useradd.c:232 +-#, c-format +-msgid "Cannot create user's home directory: %s\n" ++#, fuzzy, c-format ++msgid "Cannot create user's home directory: %1$s\n" + msgstr "無法建立使用者的家目錄:%s\n" + + #: src/tools/sss_useradd.c:243 +-#, c-format +-msgid "Cannot create user's mail spool: %s\n" ++#, fuzzy, c-format ++msgid "Cannot create user's mail spool: %1$s\n" + msgstr "無法建立使用者的郵件 spool:%s\n" + + #: src/tools/sss_useradd.c:255 +@@ -1255,9 +1255,9 @@ msgid "Specify group to delete\n" + msgstr "指定要刪除的群組\n" + + #: src/tools/sss_groupdel.c:101 +-#, c-format +-msgid "Group %s is outside the defined ID range for domain\n" +-msgstr "" ++#, fuzzy, c-format ++msgid "Group %1$s is outside the defined ID range for domain\n" ++msgstr "使用者 %s 位於為網域所定義的 ID 範圍外\n" + + #: src/tools/sss_groupdel.c:115 + msgid "" +@@ -1297,9 +1297,9 @@ msgstr "成員群組必須位於與親代群組相同的網域內\n" + + #: src/tools/sss_groupmod.c:155 src/tools/sss_groupmod.c:182 + #: src/tools/sss_usermod.c:176 src/tools/sss_usermod.c:203 +-#, c-format ++#, fuzzy, c-format + msgid "" +-"Cannot find group %s in local domain, only groups in local domain are " ++"Cannot find group %1$s in local domain, only groups in local domain are " + "allowed\n" + msgstr "在本機網域內找不到 %s 群組,只許可本機網域內的群組\n" + +@@ -1316,8 +1316,8 @@ msgid "Transaction error. Could not modify group.\n" + msgstr "處理事項發生錯誤。無法修改群組。\n" + + #: src/tools/sss_groupshow.c:562 +-#, c-format +-msgid "%s%sGroup: %s\n" ++#, fuzzy, c-format ++msgid "%1$s%2$sGroup: %3$s\n" + msgstr "%s%s群組:%s\n" + + #: src/tools/sss_groupshow.c:563 +@@ -1325,27 +1325,27 @@ msgid "Magic Private " + msgstr "魔法隱私" + + #: src/tools/sss_groupshow.c:565 +-#, c-format +-msgid "%sGID number: %d\n" ++#, fuzzy, c-format ++msgid "%1$sGID number: %2$d\n" + msgstr "%sGID 編號:%d\n" + + #: src/tools/sss_groupshow.c:567 + #, c-format +-msgid "%sMember users: " ++msgid "%1$sMember users: " + msgstr "" + + #: src/tools/sss_groupshow.c:574 + #, c-format + msgid "" + "\n" +-"%sIs a member of: " ++"%1$sIs a member of: " + msgstr "" + + #: src/tools/sss_groupshow.c:581 + #, c-format + msgid "" + "\n" +-"%sMember groups: " ++"%1$sMember groups: " + msgstr "" + + #: src/tools/sss_groupshow.c:617 +@@ -1387,8 +1387,8 @@ msgid "Specify user to delete\n" + msgstr "指定要刪除的使用者\n" + + #: src/tools/sss_userdel.c:230 +-#, c-format +-msgid "User %s is outside the defined ID range for domain\n" ++#, fuzzy, c-format ++msgid "User %1$s is outside the defined ID range for domain\n" + msgstr "使用者 %s 位於為網域所定義的 ID 範圍外\n" + + #: src/tools/sss_userdel.c:255 +@@ -1397,7 +1397,7 @@ msgstr "" + + #: src/tools/sss_userdel.c:267 + #, c-format +-msgid "WARNING: The user (uid %lu) was still logged in when deleted.\n" ++msgid "WARNING: The user (uid %1$lu) was still logged in when deleted.\n" + msgstr "" + + #: src/tools/sss_userdel.c:272 +@@ -1410,7 +1410,7 @@ msgstr "" + + #: src/tools/sss_userdel.c:284 + #, c-format +-msgid "The post-delete command failed: %s\n" ++msgid "The post-delete command failed: %1$s\n" + msgstr "" + + #: src/tools/sss_userdel.c:296 +@@ -1418,8 +1418,8 @@ msgid "Not removing home dir - not owned by user\n" + msgstr "不會移除家目錄 - 並非由使用者所擁有\n" + + #: src/tools/sss_userdel.c:298 +-#, c-format +-msgid "Cannot remove homedir: %s\n" ++#, fuzzy, c-format ++msgid "Cannot remove homedir: %1$s\n" + msgstr "無法移除家目錄:%s\n" + + #: src/tools/sss_userdel.c:309 +@@ -1479,22 +1479,22 @@ msgstr "" + + #: src/tools/sss_cache.c:172 + #, c-format +-msgid "No such %s named %s, skipping\n" ++msgid "No such %1$s named %2$s, skipping\n" + msgstr "" + + #: src/tools/sss_cache.c:175 + #, c-format +-msgid "No objects of type %s in the cache, skipping\n" ++msgid "No objects of type %1$s in the cache, skipping\n" + msgstr "" + + #: src/tools/sss_cache.c:187 + #, c-format +-msgid "Couldn't invalidate %s" ++msgid "Couldn't invalidate %1$s" + msgstr "" + + #: src/tools/sss_cache.c:194 + #, c-format +-msgid "Couldn't invalidate %s %s" ++msgid "Couldn't invalidate %1$s %2$s" + msgstr "" + + #: src/tools/sss_cache.c:323 +@@ -1547,7 +1547,7 @@ msgstr "" + + #: src/tools/sss_cache.c:455 + #, c-format +-msgid "Could not open domain %s\n" ++msgid "Could not open domain %1$s\n" + msgstr "" + + #: src/tools/sss_cache.c:457 +@@ -1567,8 +1567,8 @@ msgid "Out of memory\n" + msgstr "記憶體耗盡\n" + + #: src/tools/tools_util.h:40 +-#, c-format +-msgid "%s must be run as root\n" ++#, fuzzy, c-format ++msgid "%1$s must be run as root\n" + msgstr "%s 必須以 root 身分執行\n" + + #: src/util/util.h:93 +diff --git a/src/man/po/cs.po b/src/man/po/cs.po +index 086a85bb5acc019acc3df65dab150fcf011f294d..a93533bb85c37c74017834cec7c461c97a182eea 100644 +--- a/src/man/po/cs.po ++++ b/src/man/po/cs.po +@@ -8,7 +8,7 @@ msgid "" + msgstr "" + "Project-Id-Version: SSSD\n" + "Report-Msgid-Bugs-To: sssd-devel@redhat.com\n" +-"POT-Creation-Date: 2012-05-11 14:59-0300\n" ++"POT-Creation-Date: 2012-05-22 09:33-0300\n" + "PO-Revision-Date: 2012-04-20 17:34+0000\n" + "Last-Translator: sgallagh \n" + "Language-Team: Czech (http://www.transifex.net/projects/p/fedora/language/" +@@ -825,7 +825,7 @@ msgstr "" + #: sssd.conf.5.xml:523 + msgid "" + "The default shell to use if the provider does not return one during lookup. " +-"This option supercedes any other shell options if it takes effect." ++"This option supersedes any other shell options if it takes effect." + msgstr "" + + #. type: Content of: +@@ -1111,7 +1111,7 @@ msgstr "" + #. type: Content of: + #: sssd.conf.5.xml:789 + msgid "" +-"Whether or not to hash host names and adresses in the managed known_hosts " ++"Whether or not to hash host names and addresses in the managed known_hosts " + "file." + msgstr "" + +@@ -7160,7 +7160,7 @@ msgstr "" + #. type: Content of: + #: include/ldap_id_mapping.xml:85 + msgid "" +-"NOTE: This option is different from id_mn in that " ++"NOTE: This option is different from id_min in that " + "id_min acts to filter the output of requests to this domain, " + "whereas this option controls the range of ID assignment. This is a subtle " + "distinction, but the good general advice would be to have id_min\n" + "Language-Team: Spanish (Castilian) \n" +@@ -916,7 +916,7 @@ msgstr "default_shell (cadena)" + #: sssd.conf.5.xml:523 + msgid "" + "The default shell to use if the provider does not return one during lookup. " +-"This option supercedes any other shell options if it takes effect." ++"This option supersedes any other shell options if it takes effect." + msgstr "" + + #. type: Content of: +@@ -1212,7 +1212,7 @@ msgstr "" + #. type: Content of: + #: sssd.conf.5.xml:789 + msgid "" +-"Whether or not to hash host names and adresses in the managed known_hosts " ++"Whether or not to hash host names and addresses in the managed known_hosts " + "file." + msgstr "" + +@@ -7564,7 +7564,7 @@ msgstr "" + #. type: Content of: + #: include/ldap_id_mapping.xml:85 + msgid "" +-"NOTE: This option is different from id_mn in that " ++"NOTE: This option is different from id_min in that " + "id_min acts to filter the output of requests to this domain, " + "whereas this option controls the range of ID assignment. This is a subtle " + "distinction, but the good general advice would be to have id_min\n" + "Language-Team: French \n" +@@ -967,7 +967,7 @@ msgstr "default_shell (chaîne)" + #: sssd.conf.5.xml:523 + msgid "" + "The default shell to use if the provider does not return one during lookup. " +-"This option supercedes any other shell options if it takes effect." ++"This option supersedes any other shell options if it takes effect." + msgstr "" + + #. type: Content of: +@@ -1284,7 +1284,7 @@ msgstr "" + #. type: Content of: + #: sssd.conf.5.xml:789 + msgid "" +-"Whether or not to hash host names and adresses in the managed known_hosts " ++"Whether or not to hash host names and addresses in the managed known_hosts " + "file." + msgstr "" + +@@ -8232,7 +8232,7 @@ msgstr "" + #. type: Content of: + #: include/ldap_id_mapping.xml:85 + msgid "" +-"NOTE: This option is different from id_mn in that " ++"NOTE: This option is different from id_min in that " + "id_min acts to filter the output of requests to this domain, " + "whereas this option controls the range of ID assignment. This is a subtle " + "distinction, but the good general advice would be to have id_min\n" + "Language-Team: Japanese \n" +@@ -956,7 +956,7 @@ msgstr "default_shell (文字列)" + #: sssd.conf.5.xml:523 + msgid "" + "The default shell to use if the provider does not return one during lookup. " +-"This option supercedes any other shell options if it takes effect." ++"This option supersedes any other shell options if it takes effect." + msgstr "" + + #. type: Content of: +@@ -1282,7 +1282,7 @@ msgstr "sss_ssh_knownhostsproxy" + #. type: Content of: + #: sssd.conf.5.xml:789 + msgid "" +-"Whether or not to hash host names and adresses in the managed known_hosts " ++"Whether or not to hash host names and addresses in the managed known_hosts " + "file." + msgstr "" + +@@ -8416,7 +8416,7 @@ msgstr "" + #. type: Content of: + #: include/ldap_id_mapping.xml:85 + msgid "" +-"NOTE: This option is different from id_mn in that " ++"NOTE: This option is different from id_min in that " + "id_min acts to filter the output of requests to this domain, " + "whereas this option controls the range of ID assignment. This is a subtle " + "distinction, but the good general advice would be to have id_min\n" + "Language-Team: Dutch (http://www.transifex.net/projects/p/fedora/language/" +@@ -906,7 +906,7 @@ msgstr "" + #: sssd.conf.5.xml:523 + msgid "" + "The default shell to use if the provider does not return one during lookup. " +-"This option supercedes any other shell options if it takes effect." ++"This option supersedes any other shell options if it takes effect." + msgstr "" + + #. type: Content of: +@@ -1198,7 +1198,7 @@ msgstr "" + #. type: Content of: + #: sssd.conf.5.xml:789 + msgid "" +-"Whether or not to hash host names and adresses in the managed known_hosts " ++"Whether or not to hash host names and addresses in the managed known_hosts " + "file." + msgstr "" + +@@ -7249,7 +7249,7 @@ msgstr "" + #. type: Content of: + #: include/ldap_id_mapping.xml:85 + msgid "" +-"NOTE: This option is different from id_mn in that " ++"NOTE: This option is different from id_min in that " + "id_min acts to filter the output of requests to this domain, " + "whereas this option controls the range of ID assignment. This is a subtle " + "distinction, but the good general advice would be to have id_min\n" + "Language-Team: Portuguese \n" +@@ -875,7 +875,7 @@ msgstr "default_shell (string)" + #: sssd.conf.5.xml:523 + msgid "" + "The default shell to use if the provider does not return one during lookup. " +-"This option supercedes any other shell options if it takes effect." ++"This option supersedes any other shell options if it takes effect." + msgstr "" + + #. type: Content of: +@@ -1165,7 +1165,7 @@ msgstr "" + #. type: Content of: + #: sssd.conf.5.xml:789 + msgid "" +-"Whether or not to hash host names and adresses in the managed known_hosts " ++"Whether or not to hash host names and addresses in the managed known_hosts " + "file." + msgstr "" + +@@ -7361,7 +7361,7 @@ msgstr "" + #. type: Content of: + #: include/ldap_id_mapping.xml:85 + msgid "" +-"NOTE: This option is different from id_mn in that " ++"NOTE: This option is different from id_min in that " + "id_min acts to filter the output of requests to this domain, " + "whereas this option controls the range of ID assignment. This is a subtle " + "distinction, but the good general advice would be to have id_min\n" + "Language-Team: Russian \n" +@@ -829,7 +829,7 @@ msgstr "По умолчанию: loginShell" + #: sssd.conf.5.xml:523 + msgid "" + "The default shell to use if the provider does not return one during lookup. " +-"This option supercedes any other shell options if it takes effect." ++"This option supersedes any other shell options if it takes effect." + msgstr "" + + #. type: Content of: +@@ -1117,7 +1117,7 @@ msgstr "" + #. type: Content of: + #: sssd.conf.5.xml:789 + msgid "" +-"Whether or not to hash host names and adresses in the managed known_hosts " ++"Whether or not to hash host names and addresses in the managed known_hosts " + "file." + msgstr "" + +@@ -7142,7 +7142,7 @@ msgstr "" + #. type: Content of: + #: include/ldap_id_mapping.xml:85 + msgid "" +-"NOTE: This option is different from id_mn in that " ++"NOTE: This option is different from id_min in that " + "id_min acts to filter the output of requests to this domain, " + "whereas this option controls the range of ID assignment. This is a subtle " + "distinction, but the good general advice would be to have id_min\n" + "Language-Team: LANGUAGE \n" +@@ -792,7 +792,7 @@ msgstr "" + #: sssd.conf.5.xml:523 + msgid "" + "The default shell to use if the provider does not return one during " +-"lookup. This option supercedes any other shell options if it takes effect." ++"lookup. This option supersedes any other shell options if it takes effect." + msgstr "" + + #. type: Content of: +@@ -1080,7 +1080,7 @@ msgstr "" + #. type: Content of: + #: sssd.conf.5.xml:789 + msgid "" +-"Whether or not to hash host names and adresses in the managed known_hosts " ++"Whether or not to hash host names and addresses in the managed known_hosts " + "file." + msgstr "" + +@@ -7144,7 +7144,7 @@ msgstr "" + #. type: Content of: + #: include/ldap_id_mapping.xml:85 + msgid "" +-"NOTE: This option is different from id_mn in that " ++"NOTE: This option is different from id_min in that " + "id_min acts to filter the output of requests to this domain, " + "whereas this option controls the range of ID assignment. This is a subtle " + "distinction, but the good general advice would be to have " +diff --git a/src/man/po/tg.po b/src/man/po/tg.po +index d2c41ac2c31498b273e3b340ba9db0f401ab0989..e3c732a1284f8fef0a2cb3da7aa5eebfd6695afd 100644 +--- a/src/man/po/tg.po ++++ b/src/man/po/tg.po +@@ -7,7 +7,7 @@ msgid "" + msgstr "" + "Project-Id-Version: SSSD\n" + "Report-Msgid-Bugs-To: sssd-devel@redhat.com\n" +-"POT-Creation-Date: 2012-05-11 14:59-0300\n" ++"POT-Creation-Date: 2012-05-22 09:33-0300\n" + "PO-Revision-Date: 2012-04-20 17:34+0000\n" + "Last-Translator: sgallagh \n" + "Language-Team: Tajik (http://www.transifex.net/projects/p/fedora/language/" +@@ -824,7 +824,7 @@ msgstr "" + #: sssd.conf.5.xml:523 + msgid "" + "The default shell to use if the provider does not return one during lookup. " +-"This option supercedes any other shell options if it takes effect." ++"This option supersedes any other shell options if it takes effect." + msgstr "" + + #. type: Content of: +@@ -1112,7 +1112,7 @@ msgstr "" + #. type: Content of: + #: sssd.conf.5.xml:789 + msgid "" +-"Whether or not to hash host names and adresses in the managed known_hosts " ++"Whether or not to hash host names and addresses in the managed known_hosts " + "file." + msgstr "" + +@@ -7139,7 +7139,7 @@ msgstr "" + #. type: Content of: + #: include/ldap_id_mapping.xml:85 + msgid "" +-"NOTE: This option is different from id_mn in that " ++"NOTE: This option is different from id_min in that " + "id_min acts to filter the output of requests to this domain, " + "whereas this option controls the range of ID assignment. This is a subtle " + "distinction, but the good general advice would be to have id_min\n" + "Language-Team: Ukrainian \n" +@@ -978,7 +978,7 @@ msgstr "default_shell (рядок)" + #: sssd.conf.5.xml:523 + msgid "" + "The default shell to use if the provider does not return one during lookup. " +-"This option supercedes any other shell options if it takes effect." ++"This option supersedes any other shell options if it takes effect." + msgstr "" + + #. type: Content of: +@@ -1316,7 +1316,7 @@ msgstr "sss_ssh_knownhostsproxy" + #. type: Content of: + #: sssd.conf.5.xml:789 + msgid "" +-"Whether or not to hash host names and adresses in the managed known_hosts " ++"Whether or not to hash host names and addresses in the managed known_hosts " + "file." + msgstr "" + +@@ -8756,7 +8756,7 @@ msgstr "" + #. type: Content of: + #: include/ldap_id_mapping.xml:85 + msgid "" +-"NOTE: This option is different from id_mn in that " ++"NOTE: This option is different from id_min in that " + "id_min acts to filter the output of requests to this domain, " + "whereas this option controls the range of ID assignment. This is a subtle " + "distinction, but the good general advice would be to have id_min +Date: Tue, 22 May 2012 17:41:52 +0200 +Subject: [PATCH 17/19] LDAP nested groups: Do not process callback with _post + deep in the nested structure + +https://fedorahosted.org/sssd/ticket/1343 +--- + src/providers/ldap/sdap_async_groups.c | 22 ++++++++++------------ + 1 file changed, 10 insertions(+), 12 deletions(-) + +diff --git a/src/providers/ldap/sdap_async_groups.c b/src/providers/ldap/sdap_async_groups.c +index b48fe72eca1ab1dfe2dcb7a97a856ecef86d6f33..c3cc2ac92b80a52632655be03f8386ab2e68d7b9 100644 +--- a/src/providers/ldap/sdap_async_groups.c ++++ b/src/providers/ldap/sdap_async_groups.c +@@ -2493,14 +2493,13 @@ static errno_t sdap_nested_group_lookup_user(struct tevent_req *req, + ret = sdap_nested_group_process_step(req); + } + +- if (ret == EOK) { +- /* EOK means it's complete */ +- tevent_req_done(req); +- tevent_req_post(req, state->ev); +- } else if (ret != EAGAIN) { ++ if (ret != EOK && ret != EAGAIN) { ++ DEBUG(SSSDBG_OP_FAILURE, ("Nested group processing failed\n")); + return ret; ++ } else if (ret == EOK) { ++ DEBUG(SSSDBG_TRACE_FUNC, ("All done.\n")); ++ tevent_req_done(req); + } +- + return EOK; + } + /* +@@ -2578,14 +2577,13 @@ static errno_t sdap_nested_group_lookup_group(struct tevent_req *req) + ret = sdap_nested_group_process_step(req); + } + +- if (ret == EOK) { +- /* EOK means it's complete */ +- tevent_req_done(req); +- tevent_req_post(req, state->ev); +- } else if (ret != EAGAIN) { ++ if (ret != EOK && ret != EAGAIN) { ++ DEBUG(SSSDBG_OP_FAILURE, ("Nested group processing failed\n")); + return ret; ++ } else if (ret == EOK) { ++ DEBUG(SSSDBG_TRACE_FUNC, ("All done.\n")); ++ tevent_req_done(req); + } +- + return EOK; + } + +-- +1.7.10.1 + diff --git a/0018-Fixed-issue-in-SELinux-user-maps.patch b/0018-Fixed-issue-in-SELinux-user-maps.patch new file mode 100644 index 0000000..bf6172e --- /dev/null +++ b/0018-Fixed-issue-in-SELinux-user-maps.patch @@ -0,0 +1,35 @@ +From 2c3443347ea83ff5e39515bd47b632c8efa1124c Mon Sep 17 00:00:00 2001 +From: Jan Zeleny +Date: Tue, 15 May 2012 10:49:14 -0400 +Subject: [PATCH 18/19] Fixed issue in SELinux user maps + +There was an issue when IPA provider didn't set PAM_SUCCESS when +successfully finished loading SELinux user maps. This lead to the map +not being read in the responder. +--- + src/providers/ipa/ipa_session.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/providers/ipa/ipa_session.c b/src/providers/ipa/ipa_session.c +index e23b0120e6c2ce1303f4e70190721721a99b124a..238acdde776520dbb69046b8d45ecac4569e5cbc 100644 +--- a/src/providers/ipa/ipa_session.c ++++ b/src/providers/ipa/ipa_session.c +@@ -104,6 +104,7 @@ static void ipa_session_handler_done(struct tevent_req *req) + struct sysdb_attrs **maps; + bool in_transaction = false; + char *default_user; ++ struct pam_data *pd = talloc_get_type(breq->req_data, struct pam_data); + char *map_order; + + ret = ipa_get_selinux_recv(req, breq, &map_count, &maps, +@@ -140,6 +141,7 @@ static void ipa_session_handler_done(struct tevent_req *req) + in_transaction = false; + + ++ pd->pam_status = PAM_SUCCESS; + breq->fn(breq, DP_ERR_OK, EOK, "Success"); + return; + +-- +1.7.10.1 + diff --git a/0019-NSS-Fix-segfault-when-mmap-cache-cannot-be-initializ.patch b/0019-NSS-Fix-segfault-when-mmap-cache-cannot-be-initializ.patch new file mode 100644 index 0000000..d42e495 --- /dev/null +++ b/0019-NSS-Fix-segfault-when-mmap-cache-cannot-be-initializ.patch @@ -0,0 +1,35 @@ +From faa68e44b8f4237cc7a99a94dadc090ae8bd003f Mon Sep 17 00:00:00 2001 +From: Stephen Gallagher +Date: Wed, 23 May 2012 08:35:26 -0400 +Subject: [PATCH 19/19] NSS: Fix segfault when mmap cache cannot be + initialized + +--- + src/responder/nss/nsssrv_cmd.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/responder/nss/nsssrv_cmd.c b/src/responder/nss/nsssrv_cmd.c +index aa3ef3cbc0b98d3fe44e14dce212ecf1279f14f3..1b444e68a2f09749a3f230905febc5efa15c8a82 100644 +--- a/src/responder/nss/nsssrv_cmd.c ++++ b/src/responder/nss/nsssrv_cmd.c +@@ -365,7 +365,7 @@ static int fill_pwent(struct sss_packet *packet, + + num++; + +- if (pw_mmap_cache) { ++ if (pw_mmap_cache && nctx->pwd_mc_ctx) { + ret = sss_mmap_cache_pw_store(nctx->pwd_mc_ctx, + &fullname, &pwfield, + uid, gid, +@@ -1918,7 +1918,7 @@ static int fill_grent(struct sss_packet *packet, + + num++; + +- if (gr_mmap_cache) { ++ if (gr_mmap_cache && nctx->grp_mc_ctx) { + /* body was reallocated, so fullname might be pointing to + * where body used to be, not where it is */ + to_sized_string(&fullname, (const char *)&body[rzero+STRS_ROFFSET]); +-- +1.7.10.1 + diff --git a/sssd.spec b/sssd.spec index 7538704..275bd80 100644 --- a/sssd.spec +++ b/sssd.spec @@ -12,11 +12,11 @@ # Determine the location of the LDB modules directory %global ldb_modulesdir %(pkg-config --variable=modulesdir ldb) -%global ldb_version 1.1.4 +%global ldb_version 1.1.6 Name: sssd Version: 1.9.0 -Release: 1%{?dist}.beta1 +Release: 2%{?dist}.beta1 Group: Applications/System Summary: System Security Services Daemon License: GPLv3+ @@ -26,7 +26,27 @@ BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) ### Patches ### -Patch1001: FED01-Change-Kerberos-credential-cache-default-loca.patch +#Fedora-specific: set the default credential cache location +Patch0001: 0001-FEDORA-Change-Kerberos-credential-cache-default-loca.patch + +Patch0002: 0002-Potential-NULL-dereference-in-proxy-provider.patch +Patch0003: 0003-Fix-typos-in-message-and-man-pages.patch +Patch0004: 0004-Fixed-two-minor-memory-leaks.patch +Patch0005: 0005-Rename-struct-dom_sid-to-struct-sss_dom_sid.patch +Patch0006: 0006-Fix-libsss_hbac-library-version.patch +Patch0007: 0007-NSS-keep-a-pointer-to-body-after-body-is-reallocated.patch +Patch0008: 0008-Use-sized_string-correctly-in-FQDN-domains.patch +Patch0009: 0009-RPM-Allow-running-make-rpms-on-RHEL-5-machines.patch +Patch0010: 0010-Use-the-sysdb-attribute-name-not-LDAP-attribute-name.patch +Patch0011: 0011-NSS-Expire-in-memory-netgroup-cache-before-the-nowai.patch +Patch0012: 0012-Always-use-positional-arguments-in-translatable-stri.patch +Patch0013: 0013-Simple-implementation-of-Netscape-password-warning-e.patch +Patch0014: 0014-KRB5-Avoid-NULL-dereference-with-empty-keytab.patch +Patch0015: 0015-Warn-to-syslog-when-dereference-requests-fail.patch +Patch0016: 0016-Update-translation-sources.patch +Patch0017: 0017-LDAP-nested-groups-Do-not-process-callback-with-_pos.patch +Patch0018: 0018-Fixed-issue-in-SELinux-user-maps.patch +Patch0019: 0019-NSS-Fix-segfault-when-mmap-cache-cannot-be-initializ.patch ### Dependencies ### @@ -48,6 +68,7 @@ Requires(postun): systemd-units initscripts chkconfig /sbin/ldconfig %global dbpath %{sssdstatedir}/db %global pipepath %{sssdstatedir}/pipes %global pubconfpath %{sssdstatedir}/pubconf +%global mcachepath %{sssdstatedir}/mc ### Build Dependencies ### @@ -213,6 +234,7 @@ autoreconf -ivf --with-db-path=%{dbpath} \ --with-pipe-path=%{pipepath} \ --with-pubconf-path=%{pubconfpath} \ + --with-mcache-path=%{mcachepath} \ --with-init-dir=%{_initrddir} \ --with-krb5-rcache-dir=%{_localstatedir}/cache/krb5rcache \ --enable-nsslibdir=/%{_lib} \ @@ -336,6 +358,7 @@ rm -rf $RPM_BUILD_ROOT %attr(700,root,root) %dir %{dbpath} %attr(755,root,root) %dir %{pipepath} %attr(755,root,root) %dir %{pubconfpath} +%attr(755,root,root) %dir %{mcachepath} %attr(700,root,root) %dir %{pipepath}/private %attr(750,root,root) %dir %{_var}/log/%{name} %attr(700,root,root) %dir %{_sysconfdir}/sssd @@ -486,6 +509,12 @@ fi %postun -n libipa_hbac -p /sbin/ldconfig %changelog +* Thu May 24 2012 Stephen Gallagher - 1.9.0-2.beta1 +- Fix several regressions since 1.5.x +- Ensure that the RPM creates the /var/lib/sss/mc directory +- Add support for Netscape password warning expiration control +- Rebuild against libldb 1.1.6 + * Fri May 11 2012 Stephen Gallagher - 1.9.0-1.beta1 - New upstream release 1.9.0 beta 1 - https://fedorahosted.org/sssd/wiki/Releases/Notes-1.9.0beta1