Merge lp:~noskcaj/ubuntu/vivid/gnome-keyring/3.15.90 into lp:ubuntu/vivid/gnome-keyring

Proposed by Jackson Doak
Status: Rejected
Rejected by: Iain Lane
Proposed branch: lp:~noskcaj/ubuntu/vivid/gnome-keyring/3.15.90
Merge into: lp:ubuntu/vivid/gnome-keyring
Diff against target: 5857 lines (+2330/-1579)
53 files modified
.pc/bgz_exit_on_bus_close.patch/daemon/dbus/gkd-dbus.c (+5/-2)
ChangeLog (+914/-0)
Makefile.in (+4/-48)
NEWS (+6/-0)
configure (+10/-10)
configure.ac (+1/-1)
daemon/dbus/gkd-dbus.c (+5/-2)
daemon/dbus/gkd-secret-service.c (+3/-0)
daemon/dbus/test-dbus-items.c (+3/-1)
daemon/gpg-agent/Makefile.am (+0/-15)
daemon/gpg-agent/gkd-gpg-agent-ops.c (+21/-248)
daemon/gpg-agent/gkd-gpg-agent-standalone.c (+0/-123)
daemon/gpg-agent/gkd-gpg-agent.c (+1/-0)
daemon/login/Makefile.am (+1/-0)
daemon/login/gkd-login.c (+300/-0)
daemon/login/gkd-login.h (+20/-0)
daemon/ssh-agent/gkd-ssh-agent-ops.c (+13/-8)
daemon/test-startup.c (+2/-2)
debian/changelog (+6/-0)
egg/egg-asn1x.c (+8/-7)
egg/egg-cleanup.c (+1/-0)
egg/egg-hkdf.c (+1/-0)
egg/test-asn1.c (+1/-0)
egg/test-dn.c (+1/-0)
egg/test-padding.c (+1/-0)
egg/test-spawn.c (+6/-0)
pam/test-pam.c (+1/-0)
pkcs11/gkm/gkm-attributes.c (+1/-0)
pkcs11/gkm/gkm-credential.c (+4/-0)
pkcs11/gkm/gkm-data-asn1.c (+1/-0)
pkcs11/gkm/gkm-mock.c (+29/-3)
pkcs11/gkm/test-data-asn1.c (+3/-0)
pkcs11/gkm/test-data-der.c (+13/-0)
pkcs11/gkm/test-secret.c (+3/-0)
pkcs11/gkm/test-sexp.c (+2/-0)
pkcs11/gnome2-store/gkm-gnome2-file.c (+7/-13)
pkcs11/gnome2-store/gkm-gnome2-storage.c (+4/-0)
pkcs11/gnome2-store/test-import.c (+1/-0)
pkcs11/secret-store/gkm-secret-item.c (+3/-0)
pkcs11/secret-store/gkm-secret-search.c (+1/-0)
pkcs11/secret-store/gkm-secret-textual.c (+1/-0)
pkcs11/secret-store/test-secret-binary.c (+1/-0)
pkcs11/secret-store/test-secret-textual.c (+1/-0)
pkcs11/wrap-layer/gkm-wrap-prompt.c (+51/-21)
pkcs11/wrap-layer/mock-secret-store.c (+1/-1)
pkcs11/xdg-store/gkm-xdg-assertion.c (+2/-0)
pkcs11/xdg-store/gkm-xdg-trust.c (+6/-2)
pkcs11/xdg-store/test-xdg-module.c (+1/-0)
pkcs11/xdg-store/test-xdg-trust.c (+1/-0)
po/LINGUAS (+1/-0)
po/kk.po (+572/-0)
po/tr.po (+127/-128)
po/vi.po (+158/-944)
To merge this branch: bzr merge lp:~noskcaj/ubuntu/vivid/gnome-keyring/3.15.90
Reviewer Review Type Date Requested Status
Ubuntu branches Pending
Review via email: mp+251325@code.launchpad.net

Description of the change

New upstream bugfix release

 * Fix leaks [#738508]
 * Refactoring
 * Build fixes [#740190]
 * Updated translations

To post a comment you must log in.
Revision history for this message
Iain Lane (laney) wrote :

Thanks.

Could you propose merges against the Vcs-Bzr in future when working on desktop packages?

I'll copy your changes manually this time. (and take the revert for bgo #744280)

Revision history for this message
Iain Lane (laney) wrote :

Actually it looks in this case like the branch got out of date.

I'm going to bring it in sync with reality.

Unmerged revisions

173. By Jackson Doak

New upstream bugfix release.

172. By Dimitri John Ledkov

Fix the gpg/ssh agent check syntax. Thanks to Sergey Romanov (LP:
#1400662)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file '.pc/bgz_exit_on_bus_close.patch/daemon/dbus/gkd-dbus.c'
--- .pc/bgz_exit_on_bus_close.patch/daemon/dbus/gkd-dbus.c 2014-12-06 18:47:09 +0000
+++ .pc/bgz_exit_on_bus_close.patch/daemon/dbus/gkd-dbus.c 2015-02-27 19:55:06 +0000
@@ -103,7 +103,6 @@
103103
104 const gchar **env;104 const gchar **env;
105 DBusMessageIter items, entry;105 DBusMessageIter items, entry;
106 gchar **parts;
107106
108 env = gkd_util_get_environment ();107 env = gkd_util_get_environment ();
109 g_return_val_if_fail (env, DBUS_HANDLER_RESULT_NOT_YET_HANDLED);108 g_return_val_if_fail (env, DBUS_HANDLER_RESULT_NOT_YET_HANDLED);
@@ -114,13 +113,17 @@
114 if (!dbus_message_iter_open_container (&args, DBUS_TYPE_ARRAY, "{ss}", &items))113 if (!dbus_message_iter_open_container (&args, DBUS_TYPE_ARRAY, "{ss}", &items))
115 g_return_val_if_reached (DBUS_HANDLER_RESULT_NEED_MEMORY);114 g_return_val_if_reached (DBUS_HANDLER_RESULT_NEED_MEMORY);
116 while (*env) {115 while (*env) {
116 gchar **parts;
117 parts = g_strsplit (*env, "=", 2);117 parts = g_strsplit (*env, "=", 2);
118 g_return_val_if_fail (parts && parts[0] && parts[1], DBUS_HANDLER_RESULT_NOT_YET_HANDLED);118 g_return_val_if_fail (parts && parts[0] && parts[1], DBUS_HANDLER_RESULT_NOT_YET_HANDLED);
119 if (!dbus_message_iter_open_container (&items, DBUS_TYPE_DICT_ENTRY, NULL, &entry) ||119 if (!dbus_message_iter_open_container (&items, DBUS_TYPE_DICT_ENTRY, NULL, &entry) ||
120 !dbus_message_iter_append_basic (&entry, DBUS_TYPE_STRING, &parts[0]) ||120 !dbus_message_iter_append_basic (&entry, DBUS_TYPE_STRING, &parts[0]) ||
121 !dbus_message_iter_append_basic (&entry, DBUS_TYPE_STRING, &parts[1]) ||121 !dbus_message_iter_append_basic (&entry, DBUS_TYPE_STRING, &parts[1]) ||
122 !dbus_message_iter_close_container (&items, &entry))122 !dbus_message_iter_close_container (&items, &entry)) {
123 g_strfreev (parts);
123 g_return_val_if_reached (DBUS_HANDLER_RESULT_NEED_MEMORY);124 g_return_val_if_reached (DBUS_HANDLER_RESULT_NEED_MEMORY);
125 }
126 g_strfreev (parts);
124 ++env;127 ++env;
125 }128 }
126 if (!dbus_message_iter_close_container (&args, &items))129 if (!dbus_message_iter_close_container (&args, &items))
127130
=== modified file 'ChangeLog'
--- ChangeLog 2014-12-06 18:47:09 +0000
+++ ChangeLog 2015-02-27 19:55:06 +0000
@@ -1,5 +1,919 @@
1# Generate automatically. Do not edit.1# Generate automatically. Do not edit.
22
3commit bf38a2eca54dc8360bce074887a2abd4f63eaeb9
4Author: Stef Walter <stefw@gnome.org>
5Date: 2015-02-25
6
7 Release version 3.15.90
8
9 NEWS | 6 ++++++
10 configure.ac | 2 +-
11 2 files changed, 7 insertions(+), 1 deletion(-)
12
13commit a3a45e283275887947182177deb4185304593fbc
14Author: Muhammet Kara <muhammetk@gmail.com>
15Date: 2014-12-06
16
17 Updated Turkish translation
18
19 po/tr.po | 255 +++++++++++++++++++++++++++++++--------------------------------
20 1 file changed, 127 insertions(+), 128 deletions(-)
21
22commit 3eb2019cfd558f3f6a4b1d3fe6c0f9dc60c6457f
23Author: Trần Ngọc Quân <vnwildman@gmail.com>
24Date: 2014-11-21
25
26 Updated Vietnamese translation
27
28 Signed-off-by: Trần Ngọc Quân <vnwildman@gmail.com>
29
30 po/vi.po | 1102 +++++++++-----------------------------------------------------
31 1 file changed, 158 insertions(+), 944 deletions(-)
32
33commit f59fb0646dedd4e730c9e8e3c090d7cd52ac5278
34Author: Ting-Wei Lan <lantw@src.gnome.org>
35Date: 2014-11-16
36
37 Fix "void function should not return a value" error for clang
38
39 https://bugzilla.gnome.org/show_bug.cgi?id=740190
40
41 daemon/login/gkd-login.c | 2 +-
42 1 file changed, 1 insertion(+), 1 deletion(-)
43
44commit 28f04eb2bcff369ab13f3c98c00b7bcbf91594d3
45Author: Christophe Fergeau <cfergeau@redhat.com>
46Date: 2014-09-15
47
48 asn1x: Sanitize use of asn1_set_value/asn1_take_value
49
50 Most callers of asn1_set_value() seems to assume this function will take
51 ownership of the passed in GBytes, while it actually takes an additional
52 reference.
53
54 https://bugzilla.gnome.org/show_bug.cgi?id=738508
55
56 egg/egg-asn1x.c | 14 +++++++-------
57 1 file changed, 7 insertions(+), 7 deletions(-)
58
59commit 6da13bb815c3893ab305316ca3f08faaf0093953
60Author: Christophe Fergeau <cfergeau@redhat.com>
61Date: 2014-10-15
62
63 daemon: Fix GStrv leak in DBus message handler
64
65 https://bugzilla.gnome.org/show_bug.cgi?id=738508
66
67 daemon/dbus/gkd-dbus.c | 7 +++++--
68 1 file changed, 5 insertions(+), 2 deletions(-)
69
70commit b087539a6cdd624fc4e0d6ae7de2811ab96864e6
71Author: Christophe Fergeau <cfergeau@redhat.com>
72Date: 2014-09-21
73
74 Don't leak password data in gkm_wrap_prompt_do_credential
75
76 Memory returned by auto_unlock_lookup_object() must be freed
77 while memory returned by gkm_wrap_prompt_request_password() must
78 not be freed. Depending on the situation, CredentialPrompt::password
79 will contain one or the other, and currently this field is never
80 freed, causing leaks when the password comes from
81 auto_unlock_lookup_object().
82
83 This commit will always free CredentialPrompt::password when it's
84 no longer needed, and will create a copy of the returned string
85 when gkm_wrap_prompt_request_password() is called.
86
87 This fixes (line numbers from 3.13.91-2-g45bb5be):
88
89 ==2190== 8 bytes in 1 blocks are definitely lost in loss record 58 of 1,294
90 ==2190== at 0x4A0645D: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
91 ==2190== by 0x5DE6DE6: g_malloc (gmem.c:97)
92 ==2190== by 0x5E024B5: g_memdup (gstrfuncs.c:384)
93 ==2190== by 0x41296C: gkm_template_set (gkm-attributes.c:600)
94 ==2190== by 0x4129F0: gkm_template_set_value (gkm-attributes.c:614)
95 ==2190== by 0x419BCD: mock_secret_C_CreateObject (mock-secret-store.c:174)
96 ==2190== by 0x40646E: wrap_C_CreateObject (gkm-wrap-layer.c:741)
97 ==2190== by 0x418985: find_login_keyring_item (gkm-wrap-login.c:254)
98 ==2190== by 0x4190AF: gkm_wrap_login_lookup_secret (gkm-wrap-login.c:396)
99 ==2190== by 0x407E8D: auto_unlock_lookup_object (gkm-wrap-prompt.c:198)
100 ==2190== by 0x40B9B0: login_prompt_do_specific (gkm-wrap-prompt.c:1453)
101 ==2190== by 0x40C13A: gkm_wrap_prompt_do_login (gkm-wrap-prompt.c:1591)
102 ==2190== by 0x406384: auth_C_Login (gkm-wrap-layer.c:706)
103 ==2190== by 0x40472A: test_specific (test-login-auto.c:156)
104 ==2190== by 0x5E0A27A: test_case_run (gtestutils.c:2059)
105 ==2190== by 0x5E0A602: g_test_run_suite_internal (gtestutils.c:2120)
106 ==2190== by 0x5E0A6C4: g_test_run_suite_internal (gtestutils.c:2131)
107 ==2190== by 0x5E0A6C4: g_test_run_suite_internal (gtestutils.c:2131)
108 ==2190== by 0x5E0A847: g_test_run_suite (gtestutils.c:2184)
109 ==2190== by 0x5E09551: g_test_run (gtestutils.c:1488)
110 ==2190== by 0x410851: testing_thread (egg-testing.c:142)
111 ==2190== by 0x5E0D2F4: g_thread_proxy (gthread.c:764)
112 ==2190== by 0x3B7AE07F34: start_thread (pthread_create.c:309)
113 ==2190== by 0x3B7AAF4C3C: clone (clone.S:111)
114
115 https://bugzilla.gnome.org/show_bug.cgi?id=738508
116
117 pkcs11/wrap-layer/gkm-wrap-prompt.c | 10 +++++++---
118 1 file changed, 7 insertions(+), 3 deletions(-)
119
120commit dc5a7dc4e5690e258a90d8ddfc39e17c1f8d4938
121Author: Christophe Fergeau <cfergeau@redhat.com>
122Date: 2014-09-21
123
124 Don't leak password in login_prompt_do_{specific, user)
125
126 login_prompt_do_specific() and login_prompt_do_user() both
127 set GkmWrapPrompt::prompt_data to either memory which must be freed
128 with egg_secure_memory_strfree (through a call to
129 auto_unlock_lookup_*) or to const memory which must not be freed
130 (through a call to gkm_wrap_prompt_request_password).
131
132 These methods currently assume the password memory does not need
133 to be freed, which leads to this leak in test-login-auto (line numbers
134 from 3.13.91-2-g45bb5be):
135
136 ==2190== 5 bytes in 1 blocks are definitely lost in loss record 17 of 1,294
137 ==2190== at 0x40F8E4: egg_secure_alloc_full (egg-secure-memory.c:1056)
138 ==2190== by 0x417F5E: egg_secure_alloc (gkm-wrap-login.c:42)
139 ==2190== by 0x419157: gkm_wrap_login_lookup_secret (gkm-wrap-login.c:409)
140 ==2190== by 0x407E8D: auto_unlock_lookup_object (gkm-wrap-prompt.c:198)
141 ==2190== by 0x40B9B0: login_prompt_do_specific (gkm-wrap-prompt.c:1453)
142 ==2190== by 0x40C13A: gkm_wrap_prompt_do_login (gkm-wrap-prompt.c:1591)
143 ==2190== by 0x406384: auth_C_Login (gkm-wrap-layer.c:706)
144 ==2190== by 0x40472A: test_specific (test-login-auto.c:156)
145 ==2190== by 0x5E0A27A: test_case_run (gtestutils.c:2059)
146 ==2190== by 0x5E0A602: g_test_run_suite_internal (gtestutils.c:2120)
147 ==2190== by 0x5E0A6C4: g_test_run_suite_internal (gtestutils.c:2131)
148 ==2190== by 0x5E0A6C4: g_test_run_suite_internal (gtestutils.c:2131)
149 ==2190== by 0x5E0A847: g_test_run_suite (gtestutils.c:2184)
150 ==2190== by 0x5E09551: g_test_run (gtestutils.c:1488)
151 ==2190== by 0x410851: testing_thread (egg-testing.c:142)
152 ==2190== by 0x5E0D2F4: g_thread_proxy (gthread.c:764)
153 ==2190== by 0x3B7AE07F34: start_thread (pthread_create.c:309)
154 ==2190== by 0x3B7AAF4C3C: clone (clone.S:111)
155
156 https://bugzilla.gnome.org/show_bug.cgi?id=738508
157
158 pkcs11/wrap-layer/gkm-wrap-prompt.c | 62 ++++++++++++++++++++++++++-----------
159 1 file changed, 44 insertions(+), 18 deletions(-)
160
161commit abf3473a9a14784a76911ef35c0916d462d55402
162Author: Stef Walter <stefw@redhat.com>
163Date: 2014-10-26
164
165 gpg-agent: Use common code for storing/retrieving passwords
166
167 daemon/gpg-agent/gkd-gpg-agent-ops.c | 269 +++--------------------------------
168 1 file changed, 21 insertions(+), 248 deletions(-)
169
170commit 354f9887eef1c2c6144b904739ca0230bc2f2a4e
171Author: Stef Walter <stefw@redhat.com>
172Date: 2014-10-26
173
174 login: Factor out the code for storing/retrieving login keyring passwords
175
176 This was in the gpg-agent, and want to use it in our ssh-agent wrapper
177
178 daemon/login/Makefile.am | 1 +
179 daemon/login/gkd-login.c | 300 +++++++++++++++++++++++++++++++++++++++++++++++
180 daemon/login/gkd-login.h | 20 ++++
181 3 files changed, 321 insertions(+)
182
183commit d9df0a179fbfae82f8cec20cf46e8b9f03c044ba
184Author: Stef Walter <stefw@redhat.com>
185Date: 2014-10-26
186
187 gpg-agent: No longer build the testing standalone agent
188
189 This just caused more unneccessary code that we'd never use.
190
191 daemon/gpg-agent/Makefile.am | 15 ---------------
192 1 file changed, 15 deletions(-)
193
194commit ea36fd9182c143348851be2053bce9b6da052bc8
195Author: Baurzhan Muftakhidinov <baurthefirst@gmail.com>
196Date: 2014-10-28
197
198 Added Kazakh translation
199
200 po/LINGUAS | 1 +
201 po/kk.po | 572 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
202 2 files changed, 573 insertions(+)
203
204commit 082a2fe3278c37b9899c23ebac003791a8999ea5
205Author: Stef Walter <stefw@redhat.com>
206Date: 2014-10-25
207
208 Ignore vim swp temporary files
209
210 .gitignore | 1 +
211 1 file changed, 1 insertion(+)
212
213commit 39aeef6f368e4d8517f19b83c33d55b9cc87f44f
214Author: Christophe Fergeau <cfergeau@redhat.com>
215Date: 2014-10-14
216
217 GkdGpgAgent: Unref GIOChannel when no longer needed
218
219 This fixes a memory leak reported by valgrind on daemon shutdown
220 (tested by starting a new daemon instance with --replace).
221
222 https://bugzilla.gnome.org/show_bug.cgi?id=738508
223
224 daemon/gpg-agent/gkd-gpg-agent.c | 1 +
225 1 file changed, 1 insertion(+)
226
227commit 3db6f3bbbd13d6eec29cf96f103975f793b24e4e
228Author: Christophe Fergeau <cfergeau@redhat.com>
229Date: 2014-10-14
230
231 Free GkdSecretService::alias_directory in finalize()
232
233 This fixes a memory leak reported by valgrind on daemon shutdown
234 (tested by starting a new daemon instance with --replace).
235
236 https://bugzilla.gnome.org/show_bug.cgi?id=738508
237
238 daemon/dbus/gkd-secret-service.c | 3 +++
239 1 file changed, 3 insertions(+)
240
241commit ddcdccbf98ba71547c6494db07b3ece505ec769b
242Author: Christophe Fergeau <cfergeau@redhat.com>
243Date: 2014-10-13
244
245 GkmMock: Fix handling of CKA_G_CREDENTIAL_TEMPLATE attributes
246
247 These are special as their value is an array of CK_ATTRIBUTE pointing to
248 allocated memory. Moreover, when gkm_mock_C_SetAttributeValue() is
249 called, this memory is owned by the caller, so it needs to be duplicated
250 as the caller may free it before GkmMock no longer needs it.
251
252 We also need to make sure this memory we just duplicated is correctly
253 freed when no longer needed.
254
255 This is achieved by introducing an additional global variable,
256 the_credential_template. This is similar to how this type of attributes
257 is handled in GkmSecretCollection.
258
259 Without this, running test-login-auto in valgrind causes invalid reads:
260
261 ==5954== Invalid read of size 1
262 ==5954== at 0x4123D4: gkm_attributes_find_boolean (gkm-attributes.c:503)
263 ==5954== by 0x408C00: set_unlock_options_on_prompt (gkm-wrap-prompt.c:520)
264 ==5954== by 0x40A3E8: gkm_wrap_prompt_do_credential (gkm-wrap-prompt.c:1055)
265 ==5954== by 0x40641C: auth_C_CreateObject (gkm-wrap-layer.c:764)
266 ==5954== by 0x404D7B: test_unlock_keyring (test-login-auto.c:243)
267 ==5954== by 0x5E04A8B: test_case_run (gtestutils.c:2059)
268 ==5954== by 0x5E04E2D: g_test_run_suite_internal (gtestutils.c:2120)
269 ==5954== by 0x5E04EEF: g_test_run_suite_internal (gtestutils.c:2131)
270 ==5954== by 0x5E04EEF: g_test_run_suite_internal (gtestutils.c:2131)
271 ==5954== by 0x5E0506F: g_test_run_suite (gtestutils.c:2184)
272 ==5954== by 0x5E03D5C: g_test_run (gtestutils.c:1488)
273 ==5954== by 0x410725: testing_thread (egg-testing.c:142)
274 ==5954== by 0x5E07B29: g_thread_proxy (gthread.c:764)
275 ==5954== by 0x3899207529: start_thread (pthread_create.c:310)
276 ==5954== by 0x3898F0077C: clone (clone.S:109)
277 ==5954== Address 0x85bad90 is 0 bytes inside a block of size 1 free'd
278 ==5954== at 0x4A07CE9: free (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
279 ==5954== by 0x5DE1A0D: g_free (gmem.c:190)
280 ==5954== by 0x409E54: gkm_wrap_prompt_finalize (gkm-wrap-prompt.c:933)
281 ==5954== by 0x590293A: g_object_unref (gobject.c:3170)
282 ==5954== by 0x40644A: auth_C_CreateObject (gkm-wrap-layer.c:771)
283 ==5954== by 0x404CD5: test_unlock_keyring (test-login-auto.c:234)
284 ==5954== by 0x5E04A8B: test_case_run (gtestutils.c:2059)
285 ==5954== by 0x5E04E2D: g_test_run_suite_internal (gtestutils.c:2120)
286 ==5954== by 0x5E04EEF: g_test_run_suite_internal (gtestutils.c:2131)
287 ==5954== by 0x5E04EEF: g_test_run_suite_internal (gtestutils.c:2131)
288 ==5954== by 0x5E0506F: g_test_run_suite (gtestutils.c:2184)
289 ==5954== by 0x5E03D5C: g_test_run (gtestutils.c:1488)
290 ==5954== by 0x410725: testing_thread (egg-testing.c:142)
291 ==5954== by 0x5E07B29: g_thread_proxy (gthread.c:764)
292 ==5954== by 0x3899207529: start_thread (pthread_create.c:310)
293 ==5954== by 0x3898F0077C: clone (clone.S:109)
294
295 https://bugzilla.gnome.org/show_bug.cgi?id=738508
296
297 pkcs11/gkm/gkm-mock.c | 27 +++++++++++++++++++++++++--
298 1 file changed, 25 insertions(+), 2 deletions(-)
299
300commit 87f82c227694279d7e6ad26ca90112835a69c7c5
301Author: Christophe Fergeau <cfergeau@redhat.com>
302Date: 2014-10-01
303
304 test-spawn: Fix leaks of EchoData content
305
306 EchoData::error and EchoData::output must be freed after
307 use.
308
309 https://bugzilla.gnome.org/show_bug.cgi?id=738508
310
311 egg/test-spawn.c | 6 ++++++
312 1 file changed, 6 insertions(+)
313
314commit 0db2253d64b5607bf20e4e17060de81450e91797
315Author: Christophe Fergeau <cfergeau@redhat.com>
316Date: 2014-09-22
317
318 xdg: Fix ref leak in remove_assertion_from_trust()
319
320 When a transaction is used, remove_assertion_from_trust() will
321 steal the assertion and its key from the 'assertions' hash table.
322 The stolen assertion will then be added to the transaction and be
323 unreferenced later, but the key must be unref'ed as the hash table
324 owned a reference on it.
325
326 This fixes:
327
328 ==9337== 104 (40 direct, 64 indirect) bytes in 1 blocks are definitely lost in loss record 614 of 678
329 ==9337== at 0x4A0645D: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
330 ==9337== by 0x4EEADE6: g_malloc (gmem.c:97)
331 ==9337== by 0x4F03A22: g_slice_alloc (gslice.c:1007)
332 ==9337== by 0x4EB6954: g_bytes_new_with_free_func (gbytes.c:183)
333 ==9337== by 0x4EB68D5: g_bytes_new_take (gbytes.c:126)
334 ==9337== by 0x4116D4: create_assertion_key (gkm-xdg-trust.c:355)
335 ==9337== by 0x411755: lookup_or_create_assertion_key (gkm-xdg-trust.c:371)
336 ==9337== by 0x41312C: gkm_xdg_trust_replace_assertion (gkm-xdg-trust.c:874)
337 ==9337== by 0x413B62: factory_create_assertion (gkm-xdg-assertion.c:181)
338 ==9337== by 0x4338A3: gkm_session_create_object_for_factory (gkm-session.c:778)
339 ==9337== by 0x433A5B: gkm_session_create_object_for_attributes (gkm-session.c:820)
340 ==9337== by 0x434222: gkm_session_C_CreateObject (gkm-session.c:954)
341 ==9337== by 0x40A1D0: test_create_assertion_twice (test-xdg-trust.c:497)
342 ==9337== by 0x4F0E27A: test_case_run (gtestutils.c:2059)
343 ==9337== by 0x4F0E602: g_test_run_suite_internal (gtestutils.c:2120)
344 ==9337== by 0x4F0E6C4: g_test_run_suite_internal (gtestutils.c:2131)
345 ==9337== by 0x4F0E6C4: g_test_run_suite_internal (gtestutils.c:2131)
346 ==9337== by 0x4F0E847: g_test_run_suite (gtestutils.c:2184)
347 ==9337== by 0x4F0D551: g_test_run (gtestutils.c:1488)
348 ==9337== by 0x4516AD: testing_thread (egg-testing.c:142)
349 ==9337== by 0x4F112F4: g_thread_proxy (gthread.c:764)
350 ==9337== by 0x3B7AE07F34: start_thread (pthread_create.c:309)
351 ==9337== by 0x3B7AAF4C3C: clone (clone.S:111)
352
353 https://bugzilla.gnome.org/show_bug.cgi?id=738508
354
355 pkcs11/xdg-store/gkm-xdg-trust.c | 1 +
356 1 file changed, 1 insertion(+)
357
358commit 37c493c086f1721d6dea77bac462e60dc23096df
359Author: Christophe Fergeau <cfergeau@redhat.com>
360Date: 2014-09-22
361
362 xdg: Remove wrong unref in gkm_xdg_trust_replace_assertion
363
364 Callers of lookup_or_create_assertion_key() don't own a reference
365 on the returned GBytes so it should not be unref'fed before exiting
366 gkm_xdg_trust_replace_assertion.
367 This solves the following errors from valgrind when running test-xdg-trust
368
369 ==15477==
370 ==15477== Thread 2 testing:
371 ==15477== Invalid read of size 4
372 ==15477== at 0x4EB6B75: g_bytes_unref (gbytes.c:306)
373 ==15477== by 0x4EC2692: g_datalist_clear (gdataset.c:273)
374 ==15477== by 0x4C284A3: g_object_finalize (gobject.c:1033)
375 ==15477== by 0x42B35E: gkm_object_finalize (gkm-object.c:448)
376 ==15477== by 0x414134: gkm_assertion_finalize (gkm-assertion.c:134)
377 ==15477== by 0x4C2D256: g_object_unref (gobject.c:3170)
378 ==15477== by 0x43B9C7: gkm_util_dispose_unref (gkm-util.c:137)
379 ==15477== by 0x4ECEBD1: g_hash_table_remove_all_nodes (ghash.c:503)
380 ==15477== by 0x4ECFC02: g_hash_table_remove_all (ghash.c:1371)
381 ==15477== by 0x431DBB: gkm_session_dispose (gkm-session.c:409)
382 ==15477== by 0x4C2D131: g_object_unref (gobject.c:3133)
383 ==15477== by 0x425391: apartment_free (gkm-module.c:241)
384 ==15477== by 0x4ECEBD1: g_hash_table_remove_all_nodes (ghash.c:503)
385 ==15477== by 0x4ECFC02: g_hash_table_remove_all (ghash.c:1371)
386 ==15477== by 0x4267F9: gkm_module_dispose (gkm-module.c:633)
387 ==15477== by 0x4107D3: gkm_xdg_module_dispose (gkm-xdg-module.c:553)
388 ==15477== by 0x4C28648: g_object_run_dispose (gobject.c:1076)
389 ==15477== by 0x40CCDD: gkm_C_Finalize (gkm-module-ep.h:102)
390 ==15477== by 0x40C7F0: mock_xdg_module_leave_and_finalize (mock-xdg-module.c:151)
391 ==15477== by 0x408585: teardown (test-xdg-trust.c:138)
392 ==15477== by 0x4F0E2FE: test_case_run (gtestutils.c:2069)
393 ==15477== by 0x4F0E602: g_test_run_suite_internal (gtestutils.c:2120)
394 ==15477== by 0x4F0E6C4: g_test_run_suite_internal (gtestutils.c:2131)
395 ==15477== by 0x4F0E6C4: g_test_run_suite_internal (gtestutils.c:2131)
396 ==15477== by 0x4F0E847: g_test_run_suite (gtestutils.c:2184)
397 ==15477== by 0x4F0D551: g_test_run (gtestutils.c:1488)
398 ==15477== by 0x4516B9: testing_thread (egg-testing.c:142)
399 ==15477== by 0x4F112F4: g_thread_proxy (gthread.c:764)
400 ==15477== by 0x3B7AE07F34: start_thread (pthread_create.c:309)
401 ==15477== by 0x3B7AAF4C3C: clone (clone.S:111)
402 ==15477== Address 0x52b6100 is 16 bytes inside a block of size 40 free'd
403 ==15477== at 0x4A07577: free (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
404 ==15477== by 0x4EEAF5F: g_free (gmem.c:190)
405 ==15477== by 0x4F03C59: g_slice_free1 (gslice.c:1112)
406 ==15477== by 0x4EB6BB8: g_bytes_unref (gbytes.c:310)
407 ==15477== by 0x4ECEBB3: g_hash_table_remove_all_nodes (ghash.c:500)
408 ==15477== by 0x4ECFC02: g_hash_table_remove_all (ghash.c:1371)
409 ==15477== by 0x4ECF7C4: g_hash_table_destroy (ghash.c:1067)
410 ==15477== by 0x4127E9: gkm_xdg_trust_finalize (gkm-xdg-trust.c:706)
411 ==15477== by 0x4C2D256: g_object_unref (gobject.c:3170)
412 ==15477== by 0x43B9C7: gkm_util_dispose_unref (gkm-util.c:137)
413 ==15477== by 0x4ECEBD1: g_hash_table_remove_all_nodes (ghash.c:503)
414 ==15477== by 0x4ECFC02: g_hash_table_remove_all (ghash.c:1371)
415 ==15477== by 0x431DBB: gkm_session_dispose (gkm-session.c:409)
416 ==15477== by 0x4C2D131: g_object_unref (gobject.c:3133)
417 ==15477== by 0x425391: apartment_free (gkm-module.c:241)
418 ==15477== by 0x4ECEBD1: g_hash_table_remove_all_nodes (ghash.c:503)
419 ==15477== by 0x4ECFC02: g_hash_table_remove_all (ghash.c:1371)
420 ==15477== by 0x4267F9: gkm_module_dispose (gkm-module.c:633)
421 ==15477== by 0x4107D3: gkm_xdg_module_dispose (gkm-xdg-module.c:553)
422 ==15477== by 0x4C28648: g_object_run_dispose (gobject.c:1076)
423 ==15477== by 0x40CCDD: gkm_C_Finalize (gkm-module-ep.h:102)
424 ==15477== by 0x40C7F0: mock_xdg_module_leave_and_finalize (mock-xdg-module.c:151)
425 ==15477== by 0x408585: teardown (test-xdg-trust.c:138)
426 ==15477== by 0x4F0E2FE: test_case_run (gtestutils.c:2069)
427 ==15477== by 0x4F0E602: g_test_run_suite_internal (gtestutils.c:2120)
428 ==15477== by 0x4F0E6C4: g_test_run_suite_internal (gtestutils.c:2131)
429 ==15477== by 0x4F0E6C4: g_test_run_suite_internal (gtestutils.c:2131)
430 ==15477== by 0x4F0E847: g_test_run_suite (gtestutils.c:2184)
431 ==15477== by 0x4F0D551: g_test_run (gtestutils.c:1488)
432 ==15477== by 0x4516B9: testing_thread (egg-testing.c:142)
433 ==15477== by 0x4F112F4: g_thread_proxy (gthread.c:764)
434 ==15477== by 0x3B7AE07F34: start_thread (pthread_create.c:309)
435 ==15477== by 0x3B7AAF4C3C: clone (clone.S:111)
436
437 https://bugzilla.gnome.org/show_bug.cgi?id=738508
438
439 pkcs11/xdg-store/gkm-xdg-trust.c | 1 -
440 1 file changed, 1 deletion(-)
441
442commit f2e759970c1a3a42378528a15166221715493288
443Author: Christophe Fergeau <cfergeau@redhat.com>
444Date: 2014-09-21
445
446 test-xdg-trust: Fix GChecksum leaks
447
448 'md' is created using g_checksum_new() so it must be destroyed
449 with g_checksum_free() after use.
450
451 https://bugzilla.gnome.org/show_bug.cgi?id=738508
452
453 pkcs11/gkm/gkm-attributes.c | 1 +
454 pkcs11/xdg-store/test-xdg-trust.c | 1 +
455 2 files changed, 2 insertions(+)
456
457commit a88f4fcf255495ee575b4b7b94574c3ca0b66ca1
458Author: Christophe Fergeau <cfergeau@redhat.com>
459Date: 2014-09-21
460
461 Unref GkmXdgTrust::bytes in finalize()
462
463 This will cause leaks otherwise, for example in test-xdg-module.
464
465 https://bugzilla.gnome.org/show_bug.cgi?id=738508
466
467 pkcs11/xdg-store/gkm-xdg-trust.c | 4 ++++
468 1 file changed, 4 insertions(+)
469
470commit 621a86e8b1b14a387cf1dd895005007570c3d2c3
471Author: Christophe Fergeau <cfergeau@redhat.com>
472Date: 2014-09-21
473
474 test-xdg-module: Fix memory leak
475
476 Memory from g_file_get_contents() was never freed.
477
478 https://bugzilla.gnome.org/show_bug.cgi?id=738508
479
480 pkcs11/xdg-store/test-xdg-module.c | 1 +
481 1 file changed, 1 insertion(+)
482
483commit bbb96835cc4120d6c9f0d7bf272f6eb386a07468
484Author: Christophe Fergeau <cfergeau@redhat.com>
485Date: 2014-09-21
486
487 xdg: Don't leak ref in lookup_or_create_assertion_key()
488
489 When lookup_or_create_assertion_key() creates a new assertion key,
490 it own a reference on the GBytes created by create_assertion_key()
491 and it will then take an extra ref on it when associating it with a
492 GkmAssertion instance.
493
494 This will cause a leak of the memory returned by create_assertion_key()
495 as one of these references will never be dropped.
496
497 https://bugzilla.gnome.org/show_bug.cgi?id=738508
498
499 pkcs11/xdg-store/gkm-xdg-trust.c | 2 +-
500 1 file changed, 1 insertion(+), 1 deletion(-)
501
502commit bc17247fdd1fa843560ecebb4f20a10460df0d63
503Author: Christophe Fergeau <cfergeau@redhat.com>
504Date: 2014-09-21
505
506 Fix leak in gkm_mock_C_SetPIN()
507
508 https://bugzilla.gnome.org/show_bug.cgi?id=738508
509
510 pkcs11/gkm/gkm-mock.c | 5 ++++-
511 1 file changed, 4 insertions(+), 1 deletion(-)
512
513commit 670fe30c2dfe7accc738c8def6c1ccf047c944b6
514Author: Christophe Fergeau <cfergeau@redhat.com>
515Date: 2014-10-01
516
517 gkm-xdg-assertion: Fix leak in factory_create_assertion()
518
519 'purpose' and 'peer' were allocated through gkm_attributes_find_string()
520 and must thus be freed after use.
521
522 https://bugzilla.gnome.org/show_bug.cgi?id=738508
523
524 pkcs11/xdg-store/gkm-xdg-assertion.c | 2 ++
525 1 file changed, 2 insertions(+)
526
527commit ca2b73954d497ea36b94b547649a08dd85ec38e1
528Author: Christophe Fergeau <cfergeau@redhat.com>
529Date: 2014-10-01
530
531 Fix leak in mock_secret_C_CreateObject
532
533 'template' is created with gkm_template_new() so it must be freed
534 using gkm_template_free().
535
536 https://bugzilla.gnome.org/show_bug.cgi?id=738508
537
538 pkcs11/wrap-layer/mock-secret-store.c | 2 +-
539 1 file changed, 1 insertion(+), 1 deletion(-)
540
541commit 165f0e3210e32538c847be91896736c17a1f6ad6
542Author: Christophe Fergeau <cfergeau@redhat.com>
543Date: 2014-10-01
544
545 gkm-secret-textual: Fix leak in generate_attribute()
546
547 The GList returned by gkm_secret_fields_get_names() must be
548 freed with g_list_free after use as this is created using
549 g_hash_table_get_keys().
550
551 https://bugzilla.gnome.org/show_bug.cgi?id=738508
552
553 pkcs11/secret-store/gkm-secret-textual.c | 1 +
554 1 file changed, 1 insertion(+)
555
556commit 750047bc77edc730e76fc536ce17151b52ae22da
557Author: Christophe Fergeau <cfergeau@redhat.com>
558Date: 2014-10-01
559
560 gkm-secret-search: Fix leak in factory_create_search()
561
562 gkm_attribute_get_string() returns a newly allocated string which must
563 be freed when no longer useful.
564
565 https://bugzilla.gnome.org/show_bug.cgi?id=738508
566
567 pkcs11/secret-store/gkm-secret-search.c | 1 +
568 1 file changed, 1 insertion(+)
569
570commit a1984261cb2aabf20d2014a987e2adfbfbae7fc1
571Author: Christophe Fergeau <cfergeau@redhat.com>
572Date: 2014-10-01
573
574 gkm-gnome2-storage: Unref GkmGnome2Storage::login in dispose()
575
576 https://bugzilla.gnome.org/show_bug.cgi?id=738508
577
578 pkcs11/gnome2-store/gkm-gnome2-storage.c | 4 ++++
579 1 file changed, 4 insertions(+)
580
581commit bf96feaff541668ead5438ee074c4318165a3962
582Author: Christophe Fergeau <cfergeau@redhat.com>
583Date: 2014-10-01
584
585 secret-store/test*: Don't leak secret data memory
586
587 Both test-secret-binary and test-secret-textual call
588 g_file_get_contents() but never free the returned data, causing a memory
589 leak.
590
591 https://bugzilla.gnome.org/show_bug.cgi?id=738508
592
593 pkcs11/secret-store/test-secret-binary.c | 1 +
594 pkcs11/secret-store/test-secret-textual.c | 1 +
595 2 files changed, 2 insertions(+)
596
597commit 9421bf589095380286bed90bca67f6ae2746ce0b
598Author: Christophe Fergeau <cfergeau@redhat.com>
599Date: 2014-10-01
600
601 test-import: Don't leak args.pReserved
602
603 It's allocated with g_strdup_printf and must thus be freed after use.
604
605 https://bugzilla.gnome.org/show_bug.cgi?id=738508
606
607 pkcs11/gnome2-store/test-import.c | 1 +
608 1 file changed, 1 insertion(+)
609
610commit c2870de15ba639b6a02916a89be07274c2b5895b
611Author: Christophe Fergeau <cfergeau@redhat.com>
612Date: 2014-10-01
613
614 egg-hkdf: Fix gcry_md_ht_t leak in egg_hkdf_perform
615
616 The 'md2' gcry_md_ht_t variable is opened with gcry_md_open() in that
617 method but is never closed, which causes a leak.
618
619 https://bugzilla.gnome.org/show_bug.cgi?id=738508
620
621 egg/egg-hkdf.c | 1 +
622 1 file changed, 1 insertion(+)
623
624commit 1581f4a33e350de62cf98bec0530934dcf2a0272
625Author: Christophe Fergeau <cfergeau@redhat.com>
626Date: 2014-10-01
627
628 egg-asn1x: Fix memory leak in egg_asn1x_set_any_raw()
629
630 In error cases, the Atlv variable 'tlv' which was created in this
631 function is not going to be used, so we must free it before returning.
632
633 https://bugzilla.gnome.org/show_bug.cgi?id=738508
634
635 egg/egg-asn1x.c | 1 +
636 1 file changed, 1 insertion(+)
637
638commit 17b429de6d2d911fcfac3fbc042aa5579a3a4535
639Author: Christophe Fergeau <cfergeau@redhat.com>
640Date: 2014-10-01
641
642 test-sexp: Fix 2 leaks
643
644 gcry_sexp_t objects created with gkm_sexp_parse_key() must be freed with
645 gcry_sexp_release(), and gcry_mpi_t objects created with
646 gkm_sexp_extract_mpi() must be freed with gcry_mpi_release() when no
647 longer used.
648
649 https://bugzilla.gnome.org/show_bug.cgi?id=738508
650
651 pkcs11/gkm/test-sexp.c | 2 ++
652 1 file changed, 2 insertions(+)
653
654commit 33793e57c557830cda36af68376f5dfd2130c073
655Author: Christophe Fergeau <cfergeau@redhat.com>
656Date: 2014-10-01
657
658 test-secret: Don't leak new secrets in test_equal()
659
660 Secrets created with gkm_secret_new* must be unref'fed when no longer
661 used.
662
663 https://bugzilla.gnome.org/show_bug.cgi?id=738508
664
665 pkcs11/gkm/test-secret.c | 3 +++
666 1 file changed, 3 insertions(+)
667
668commit 75c1fb8b8e3eb0df794bd80ed883fdc16a865664
669Author: Christophe Fergeau <cfergeau@redhat.com>
670Date: 2014-10-01
671
672 test-pam: Fix GError leak in error case
673
674 When g_file_get_contents() fails and sets an error, it must be freed.
675
676 https://bugzilla.gnome.org/show_bug.cgi?id=738508
677
678 pam/test-pam.c | 1 +
679 1 file changed, 1 insertion(+)
680
681commit dbc6af0ea986a4840e6a8a06d632435332c6d2a4
682Author: Christophe Fergeau <cfergeau@redhat.com>
683Date: 2014-10-01
684
685 test-padding: Don't leak egg_padding_pkcs1_pad_02 return value
686
687 egg_padding_pkcs1_pad_02 returns newly allocated data which must be
688 g_free'ed after use.
689
690 https://bugzilla.gnome.org/show_bug.cgi?id=738508
691
692 egg/test-padding.c | 1 +
693 1 file changed, 1 insertion(+)
694
695commit 610a177931675a08a13681d6741a1d18baaa92ee
696Author: Christophe Fergeau <cfergeau@redhat.com>
697Date: 2014-10-01
698
699 test-asn1: Don't leak 'asn' in test_create_quark()
700
701 https://bugzilla.gnome.org/show_bug.cgi?id=738508
702
703 egg/test-asn1.c | 1 +
704 1 file changed, 1 insertion(+)
705
706commit 1e18f347a1a3444b3fc7126af087d0c90a791e57
707Author: Christophe Fergeau <cfergeau@redhat.com>
708Date: 2014-10-01
709
710 test-startup: Use g_strfreev to free GStrv variable
711
712 gkd_test_launch_daemon returns a "transfer full" GStrv, so it must be
713 freed with g_strfreev after use.
714
715 https://bugzilla.gnome.org/show_bug.cgi?id=738508
716
717 daemon/test-startup.c | 4 ++--
718 1 file changed, 2 insertions(+), 2 deletions(-)
719
720commit 6c2d07a4faea639ed2b2bcf1815fdb5cbfa4945e
721Author: Christophe Fergeau <cfergeau@redhat.com>
722Date: 2014-09-17
723
724 gkm-gnome2-file: Free keys to 'entries' hash tables
725
726 The keys to the 'publics' and 'privates' hash tables are strdup'ed
727 strings, but these strings are never freed. This commit adds a free
728 function for hash table keys to the g_hash_table_new_full call.
729
730 https://bugzilla.gnome.org/show_bug.cgi?id=738508
731
732 pkcs11/gnome2-store/gkm-gnome2-file.c | 2 +-
733 1 file changed, 1 insertion(+), 1 deletion(-)
734
735commit 0fc832aa65e2d125459c9fb43c4d3ba4697270d6
736Author: Christophe Fergeau <cfergeau@redhat.com>
737Date: 2014-09-17
738
739 test-data-der: Fix various memory leaks
740
741 https://bugzilla.gnome.org/show_bug.cgi?id=738508
742
743 pkcs11/gkm/test-data-der.c | 13 +++++++++++++
744 1 file changed, 13 insertions(+)
745
746commit 298d910cfe2e468ad0005646e8a00b5fc8116e10
747Author: Christophe Fergeau <cfergeau@redhat.com>
748Date: 2014-09-17
749
750 test-data-asn1: Fix memory leaks in test_asn1_integers
751
752 https://bugzilla.gnome.org/show_bug.cgi?id=738508
753
754 pkcs11/gkm/test-data-asn1.c | 3 +++
755 1 file changed, 3 insertions(+)
756
757commit c5083ba0216b15e8f9ed842b7097e7fa6c60c25b
758Author: Christophe Fergeau <cfergeau@redhat.com>
759Date: 2014-09-17
760
761 gkm-data-asn1: Unref buffer we got from egg_asn1x_get_integer_as_raw()
762
763 Otherwise we will be leaking a reference to that buffer, and it will
764 never get destroyed. This showed up as a memory leaked in test-data-der.
765
766 https://bugzilla.gnome.org/show_bug.cgi?id=738508
767
768 pkcs11/gkm/gkm-data-asn1.c | 1 +
769 1 file changed, 1 insertion(+)
770
771commit 326a94543c5cc6c44d3fd9e1b7fd6eb11a2ea998
772Author: Christophe Fergeau <cfergeau@redhat.com>
773Date: 2014-09-17
774
775 egg/test-dn: Don't leak GBytes created in test_dn_value()
776
777 https://bugzilla.gnome.org/show_bug.cgi?id=738508
778
779 egg/test-dn.c | 1 +
780 1 file changed, 1 insertion(+)
781
782commit 8ea8329cc09e263d9628e791e0f5a464bde63413
783Author: Christophe Fergeau <cfergeau@redhat.com>
784Date: 2014-09-17
785
786 egg-cleanup: Don't leak 'cleanup' on unregister
787
788 When unregistering a cleanup instance, the memory allocated for the cleanup
789 was not freed causing a memory leak.
790
791 https://bugzilla.gnome.org/show_bug.cgi?id=738508
792
793 egg/egg-cleanup.c | 1 +
794 1 file changed, 1 insertion(+)
795
796commit 9af2db3f41e713c02e36dc71f0d6295db7d9e408
797Author: Christophe Fergeau <cfergeau@redhat.com>
798Date: 2014-09-17
799
800 test-dbus-items: Fix memory leak
801
802 https://bugzilla.gnome.org/show_bug.cgi?id=738508
803
804 daemon/dbus/test-dbus-items.c | 4 +++-
805 1 file changed, 3 insertions(+), 1 deletion(-)
806
807commit 0c9c4a549e770e89e51d5f39995fdfc8c1af71ec
808Author: Christophe Fergeau <cfergeau@redhat.com>
809Date: 2014-09-15
810
811 Free GkmSecretItem::schema in ::finalize()
812
813 https://bugzilla.gnome.org/show_bug.cgi?id=738508
814
815 pkcs11/secret-store/gkm-secret-item.c | 3 +++
816 1 file changed, 3 insertions(+)
817
818commit 04129e8d2c1cb8a0f5d6944d4bb7fa45f7171a2a
819Author: Christophe Fergeau <cfergeau@redhat.com>
820Date: 2014-09-15
821
822 gkm-gnome2-file: Fix leaks in create_cipher()
823
824 'key' and 'iv' were allocated before calling
825 egg_symkey_generate_simple() but this function allocates the memory
826 needed for the 'key' and 'iv' return value, so the memory which was
827 allocated in create_cipher() is lost and leaked.
828 This also uses egg_secure_memory_free() to free 'key' memory as
829 egg_symkey_generate_simple() allocates it with egg_secure_alloc().
830
831 https://bugzilla.gnome.org/show_bug.cgi?id=738508
832
833 pkcs11/gnome2-store/gkm-gnome2-file.c | 11 ++---------
834 1 file changed, 2 insertions(+), 9 deletions(-)
835
836commit 5a98866f4b7c89451c95e8d559e8f2021c5e1456
837Author: Christophe Fergeau <cfergeau@redhat.com>
838Date: 2014-09-15
839
840 gkm-gnome2-file: Fix leak in validate_buffer()
841
842 'check' is allocated in this function but never freed.
843
844 https://bugzilla.gnome.org/show_bug.cgi?id=738508
845
846 pkcs11/gnome2-store/gkm-gnome2-file.c | 7 ++++---
847 1 file changed, 4 insertions(+), 3 deletions(-)
848
849commit 24ff22e04c86885aa4f7f877d612c94e2e2d8f6d
850Author: Christophe Fergeau <cfergeau@redhat.com>
851Date: 2014-09-15
852
853 Unref GkmCredential::secret in ::dispose
854
855 This fixes a memory leak.
856
857 https://bugzilla.gnome.org/show_bug.cgi?id=738508
858
859 pkcs11/gkm/gkm-credential.c | 4 ++++
860 1 file changed, 4 insertions(+)
861
862commit 9bfe73731316389a9975fd440992afa914070467
863Author: Christophe Fergeau <cfergeau@redhat.com>
864Date: 2014-10-14
865
866 ssh-agent: Fix leak in op_request_identities
867
868 The object returned by gck_enumerator_next() must be unref'ed.
869
870 https://bugzilla.gnome.org/show_bug.cgi?id=738508
871
872 daemon/ssh-agent/gkd-ssh-agent-ops.c | 7 ++++---
873 1 file changed, 4 insertions(+), 3 deletions(-)
874
875commit f81fa15dcbbc3a7ce3e8be9a229e13a0678a606b
876Author: Christophe Fergeau <cfergeau@redhat.com>
877Date: 2014-10-01
878
879 ssh-agent: Fix leak in op_v1_request_identities
880
881 The object returned by gck_enumerator_next() must be unref'ed
882 as this method is "transfer full".
883
884 https://bugzilla.gnome.org/show_bug.cgi?id=738508
885
886 daemon/ssh-agent/gkd-ssh-agent-ops.c | 8 ++++----
887 1 file changed, 4 insertions(+), 4 deletions(-)
888
889commit d177a8b5353f3156ab504f39c20753d6786e5e4d
890Author: Christophe Fergeau <cfergeau@redhat.com>
891Date: 2014-09-15
892
893 ssh-agent: Fix leak in search_keys_like_attributes()
894
895 gck_enumerator_next() return value must be unref'fed as it's transfer
896 full.
897
898 https://bugzilla.gnome.org/show_bug.cgi?id=738508
899
900 daemon/ssh-agent/gkd-ssh-agent-ops.c | 5 ++++-
901 1 file changed, 4 insertions(+), 1 deletion(-)
902
903commit 04b9de9fd806598bb49e6b9d49d2697156f6f39d
904Author: Christophe Fergeau <cfergeau@redhat.com>
905Date: 2014-10-01
906
907 ssh-agent: Fix leak in remove_by_public_key()
908
909 gck_attributes_find_string() returns a newly allocated string, so it
910 must be g_free'ed after use.
911
912 https://bugzilla.gnome.org/show_bug.cgi?id=738508
913
914 daemon/ssh-agent/gkd-ssh-agent-ops.c | 1 +
915 1 file changed, 1 insertion(+)
916
3commit 32900996ac1d913bbae6e378a0a974d207d81c8e917commit 32900996ac1d913bbae6e378a0a974d207d81c8e
4Author: Stef Walter <stefw@gnome.org>918Author: Stef Walter <stefw@gnome.org>
5Date: 2014-09-23919Date: 2014-09-23
6920
=== modified file 'Makefile.in'
--- Makefile.in 2014-12-06 18:47:09 +0000
+++ Makefile.in 2015-02-27 19:55:06 +0000
@@ -116,9 +116,8 @@
116 $(am__EXEEXT_10) $(am__EXEEXT_12)116 $(am__EXEEXT_10) $(am__EXEEXT_12)
117noinst_PROGRAMS = $(check_PROGRAMS) frob-control-change$(EXEEXT) \117noinst_PROGRAMS = $(check_PROGRAMS) frob-control-change$(EXEEXT) \
118 frob-control-init$(EXEEXT) frob-control-unlock$(EXEEXT) \118 frob-control-init$(EXEEXT) frob-control-unlock$(EXEEXT) \
119 frob-control-quit$(EXEEXT) gkd-gpg-agent-standalone$(EXEEXT) \119 frob-control-quit$(EXEEXT) gkd-ssh-agent-standalone$(EXEEXT) \
120 gkd-ssh-agent-standalone$(EXEEXT) frob-gnome2-file$(EXEEXT) \120 frob-gnome2-file$(EXEEXT) gkm-rpc-daemon-standalone$(EXEEXT) \
121 gkm-rpc-daemon-standalone$(EXEEXT) \
122 dump-keyring0-format$(EXEEXT) frob-trust-file$(EXEEXT) \121 dump-keyring0-format$(EXEEXT) frob-trust-file$(EXEEXT) \
123 dump-trust-file$(EXEEXT)122 dump-trust-file$(EXEEXT)
124TESTS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \123TESTS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
@@ -659,15 +658,6 @@
659 pkcs11/xdg-store/frob-trust-file.$(OBJEXT)658 pkcs11/xdg-store/frob-trust-file.$(OBJEXT)
660frob_trust_file_OBJECTS = $(am_frob_trust_file_OBJECTS)659frob_trust_file_OBJECTS = $(am_frob_trust_file_OBJECTS)
661frob_trust_file_DEPENDENCIES = $(am__DEPENDENCIES_3)660frob_trust_file_DEPENDENCIES = $(am__DEPENDENCIES_3)
662am_gkd_gpg_agent_standalone_OBJECTS = daemon/gpg-agent/gkd_gpg_agent_standalone-gkd-gpg-agent-standalone.$(OBJEXT)
663gkd_gpg_agent_standalone_OBJECTS = \
664 $(am_gkd_gpg_agent_standalone_OBJECTS)
665gkd_gpg_agent_standalone_DEPENDENCIES = libgkd-gpg-agent.la libegg.la \
666 $(am__DEPENDENCIES_1)
667gkd_gpg_agent_standalone_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
668 $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
669 $(gkd_gpg_agent_standalone_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
670 $(LDFLAGS) -o $@
671am_gkd_ssh_agent_standalone_OBJECTS = daemon/ssh-agent/gkd_ssh_agent_standalone-gkd-ssh-agent-standalone.$(OBJEXT)661am_gkd_ssh_agent_standalone_OBJECTS = daemon/ssh-agent/gkd_ssh_agent_standalone-gkd-ssh-agent-standalone.$(OBJEXT)
672gkd_ssh_agent_standalone_OBJECTS = \662gkd_ssh_agent_standalone_OBJECTS = \
673 $(am_gkd_ssh_agent_standalone_OBJECTS)663 $(am_gkd_ssh_agent_standalone_OBJECTS)
@@ -1052,8 +1042,7 @@
1052 $(dump_trust_file_SOURCES) $(frob_control_change_SOURCES) \1042 $(dump_trust_file_SOURCES) $(frob_control_change_SOURCES) \
1053 $(frob_control_init_SOURCES) $(frob_control_quit_SOURCES) \1043 $(frob_control_init_SOURCES) $(frob_control_quit_SOURCES) \
1054 $(frob_control_unlock_SOURCES) $(frob_gnome2_file_SOURCES) \1044 $(frob_control_unlock_SOURCES) $(frob_gnome2_file_SOURCES) \
1055 $(frob_trust_file_SOURCES) $(gkd_gpg_agent_standalone_SOURCES) \1045 $(frob_trust_file_SOURCES) $(gkd_ssh_agent_standalone_SOURCES) \
1056 $(gkd_ssh_agent_standalone_SOURCES) \
1057 $(gkm_rpc_daemon_standalone_SOURCES) \1046 $(gkm_rpc_daemon_standalone_SOURCES) \
1058 $(gnome_keyring_@GKR_MAJOR@_SOURCES) \1047 $(gnome_keyring_@GKR_MAJOR@_SOURCES) \
1059 $(gnome_keyring_daemon_SOURCES) $(test_armor_SOURCES) \1048 $(gnome_keyring_daemon_SOURCES) $(test_armor_SOURCES) \
@@ -1118,7 +1107,6 @@
1118 $(frob_control_change_SOURCES) $(frob_control_init_SOURCES) \1107 $(frob_control_change_SOURCES) $(frob_control_init_SOURCES) \
1119 $(frob_control_quit_SOURCES) $(frob_control_unlock_SOURCES) \1108 $(frob_control_quit_SOURCES) $(frob_control_unlock_SOURCES) \
1120 $(frob_gnome2_file_SOURCES) $(frob_trust_file_SOURCES) \1109 $(frob_gnome2_file_SOURCES) $(frob_trust_file_SOURCES) \
1121 $(gkd_gpg_agent_standalone_SOURCES) \
1122 $(gkd_ssh_agent_standalone_SOURCES) \1110 $(gkd_ssh_agent_standalone_SOURCES) \
1123 $(gkm_rpc_daemon_standalone_SOURCES) \1111 $(gkm_rpc_daemon_standalone_SOURCES) \
1124 $(gnome_keyring_@GKR_MAJOR@_SOURCES) \1112 $(gnome_keyring_@GKR_MAJOR@_SOURCES) \
@@ -2095,17 +2083,6 @@
2095 $(GCK_CFLAGS) \2083 $(GCK_CFLAGS) \
2096 $(GCR_CFLAGS)2084 $(GCR_CFLAGS)
20972085
2098gkd_gpg_agent_standalone_SOURCES = \
2099 daemon/gpg-agent/gkd-gpg-agent-standalone.c
2100
2101gkd_gpg_agent_standalone_CFLAGS = \
2102 $(GCK_CFLAGS)
2103
2104gkd_gpg_agent_standalone_LDADD = \
2105 libgkd-gpg-agent.la \
2106 libegg.la \
2107 $(DAEMON_LIBS)
2108
2109libgkd_login_la_SOURCES = \2086libgkd_login_la_SOURCES = \
2110 daemon/login/gkd-login.c \2087 daemon/login/gkd-login.c \
2111 daemon/login/gkd-login.h \2088 daemon/login/gkd-login.h \
@@ -2113,6 +2090,7 @@
21132090
2114libgkd_login_la_CFLAGS = \2091libgkd_login_la_CFLAGS = \
2115 $(GCK_CFLAGS) \2092 $(GCK_CFLAGS) \
2093 $(GCR_CFLAGS) \
2116 $(GOBJECT_CFLAGS)2094 $(GOBJECT_CFLAGS)
21172095
2118libgkd_login_la_LIBADD = \2096libgkd_login_la_LIBADD = \
@@ -3735,13 +3713,6 @@
3735frob-trust-file$(EXEEXT): $(frob_trust_file_OBJECTS) $(frob_trust_file_DEPENDENCIES) $(EXTRA_frob_trust_file_DEPENDENCIES) 3713frob-trust-file$(EXEEXT): $(frob_trust_file_OBJECTS) $(frob_trust_file_DEPENDENCIES) $(EXTRA_frob_trust_file_DEPENDENCIES)
3736 @rm -f frob-trust-file$(EXEEXT)3714 @rm -f frob-trust-file$(EXEEXT)
3737 $(AM_V_CCLD)$(LINK) $(frob_trust_file_OBJECTS) $(frob_trust_file_LDADD) $(LIBS)3715 $(AM_V_CCLD)$(LINK) $(frob_trust_file_OBJECTS) $(frob_trust_file_LDADD) $(LIBS)
3738daemon/gpg-agent/gkd_gpg_agent_standalone-gkd-gpg-agent-standalone.$(OBJEXT): \
3739 daemon/gpg-agent/$(am__dirstamp) \
3740 daemon/gpg-agent/$(DEPDIR)/$(am__dirstamp)
3741
3742gkd-gpg-agent-standalone$(EXEEXT): $(gkd_gpg_agent_standalone_OBJECTS) $(gkd_gpg_agent_standalone_DEPENDENCIES) $(EXTRA_gkd_gpg_agent_standalone_DEPENDENCIES)
3743 @rm -f gkd-gpg-agent-standalone$(EXEEXT)
3744 $(AM_V_CCLD)$(gkd_gpg_agent_standalone_LINK) $(gkd_gpg_agent_standalone_OBJECTS) $(gkd_gpg_agent_standalone_LDADD) $(LIBS)
3745daemon/ssh-agent/gkd_ssh_agent_standalone-gkd-ssh-agent-standalone.$(OBJEXT): \3716daemon/ssh-agent/gkd_ssh_agent_standalone-gkd-ssh-agent-standalone.$(OBJEXT): \
3746 daemon/ssh-agent/$(am__dirstamp) \3717 daemon/ssh-agent/$(am__dirstamp) \
3747 daemon/ssh-agent/$(DEPDIR)/$(am__dirstamp)3718 daemon/ssh-agent/$(DEPDIR)/$(am__dirstamp)
@@ -4271,7 +4242,6 @@
4271@AMDEP_TRUE@@am__include@ @am__quote@daemon/dbus/$(DEPDIR)/test-service.Plo@am__quote@4242@AMDEP_TRUE@@am__include@ @am__quote@daemon/dbus/$(DEPDIR)/test-service.Plo@am__quote@
4272@AMDEP_TRUE@@am__include@ @am__quote@daemon/dbus/$(DEPDIR)/test_dbus_signals-test-dbus-signals.Po@am__quote@4243@AMDEP_TRUE@@am__include@ @am__quote@daemon/dbus/$(DEPDIR)/test_dbus_signals-test-dbus-signals.Po@am__quote@
4273@AMDEP_TRUE@@am__include@ @am__quote@daemon/dbus/$(DEPDIR)/test_dbus_util-test-dbus-util.Po@am__quote@4244@AMDEP_TRUE@@am__include@ @am__quote@daemon/dbus/$(DEPDIR)/test_dbus_util-test-dbus-util.Po@am__quote@
4274@AMDEP_TRUE@@am__include@ @am__quote@daemon/gpg-agent/$(DEPDIR)/gkd_gpg_agent_standalone-gkd-gpg-agent-standalone.Po@am__quote@
4275@AMDEP_TRUE@@am__include@ @am__quote@daemon/gpg-agent/$(DEPDIR)/libgkd_gpg_agent_la-gkd-gpg-agent-ops.Plo@am__quote@4245@AMDEP_TRUE@@am__include@ @am__quote@daemon/gpg-agent/$(DEPDIR)/libgkd_gpg_agent_la-gkd-gpg-agent-ops.Plo@am__quote@
4276@AMDEP_TRUE@@am__include@ @am__quote@daemon/gpg-agent/$(DEPDIR)/libgkd_gpg_agent_la-gkd-gpg-agent.Plo@am__quote@4246@AMDEP_TRUE@@am__include@ @am__quote@daemon/gpg-agent/$(DEPDIR)/libgkd_gpg_agent_la-gkd-gpg-agent.Plo@am__quote@
4277@AMDEP_TRUE@@am__include@ @am__quote@daemon/login/$(DEPDIR)/libgkd_login_la-gkd-login.Plo@am__quote@4247@AMDEP_TRUE@@am__include@ @am__quote@daemon/login/$(DEPDIR)/libgkd_login_la-gkd-login.Plo@am__quote@
@@ -5340,20 +5310,6 @@
5340@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@5310@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
5341@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pam_gnome_keyring_la_CFLAGS) $(CFLAGS) -c -o pam/pam_gnome_keyring_la-gkr-pam-stubs.lo `test -f 'pam/gkr-pam-stubs.c' || echo '$(srcdir)/'`pam/gkr-pam-stubs.c5311@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pam_gnome_keyring_la_CFLAGS) $(CFLAGS) -c -o pam/pam_gnome_keyring_la-gkr-pam-stubs.lo `test -f 'pam/gkr-pam-stubs.c' || echo '$(srcdir)/'`pam/gkr-pam-stubs.c
53425312
5343daemon/gpg-agent/gkd_gpg_agent_standalone-gkd-gpg-agent-standalone.o: daemon/gpg-agent/gkd-gpg-agent-standalone.c
5344@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gkd_gpg_agent_standalone_CFLAGS) $(CFLAGS) -MT daemon/gpg-agent/gkd_gpg_agent_standalone-gkd-gpg-agent-standalone.o -MD -MP -MF daemon/gpg-agent/$(DEPDIR)/gkd_gpg_agent_standalone-gkd-gpg-agent-standalone.Tpo -c -o daemon/gpg-agent/gkd_gpg_agent_standalone-gkd-gpg-agent-standalone.o `test -f 'daemon/gpg-agent/gkd-gpg-agent-standalone.c' || echo '$(srcdir)/'`daemon/gpg-agent/gkd-gpg-agent-standalone.c
5345@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) daemon/gpg-agent/$(DEPDIR)/gkd_gpg_agent_standalone-gkd-gpg-agent-standalone.Tpo daemon/gpg-agent/$(DEPDIR)/gkd_gpg_agent_standalone-gkd-gpg-agent-standalone.Po
5346@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='daemon/gpg-agent/gkd-gpg-agent-standalone.c' object='daemon/gpg-agent/gkd_gpg_agent_standalone-gkd-gpg-agent-standalone.o' libtool=no @AMDEPBACKSLASH@
5347@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
5348@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gkd_gpg_agent_standalone_CFLAGS) $(CFLAGS) -c -o daemon/gpg-agent/gkd_gpg_agent_standalone-gkd-gpg-agent-standalone.o `test -f 'daemon/gpg-agent/gkd-gpg-agent-standalone.c' || echo '$(srcdir)/'`daemon/gpg-agent/gkd-gpg-agent-standalone.c
5349
5350daemon/gpg-agent/gkd_gpg_agent_standalone-gkd-gpg-agent-standalone.obj: daemon/gpg-agent/gkd-gpg-agent-standalone.c
5351@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gkd_gpg_agent_standalone_CFLAGS) $(CFLAGS) -MT daemon/gpg-agent/gkd_gpg_agent_standalone-gkd-gpg-agent-standalone.obj -MD -MP -MF daemon/gpg-agent/$(DEPDIR)/gkd_gpg_agent_standalone-gkd-gpg-agent-standalone.Tpo -c -o daemon/gpg-agent/gkd_gpg_agent_standalone-gkd-gpg-agent-standalone.obj `if test -f 'daemon/gpg-agent/gkd-gpg-agent-standalone.c'; then $(CYGPATH_W) 'daemon/gpg-agent/gkd-gpg-agent-standalone.c'; else $(CYGPATH_W) '$(srcdir)/daemon/gpg-agent/gkd-gpg-agent-standalone.c'; fi`
5352@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) daemon/gpg-agent/$(DEPDIR)/gkd_gpg_agent_standalone-gkd-gpg-agent-standalone.Tpo daemon/gpg-agent/$(DEPDIR)/gkd_gpg_agent_standalone-gkd-gpg-agent-standalone.Po
5353@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='daemon/gpg-agent/gkd-gpg-agent-standalone.c' object='daemon/gpg-agent/gkd_gpg_agent_standalone-gkd-gpg-agent-standalone.obj' libtool=no @AMDEPBACKSLASH@
5354@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
5355@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gkd_gpg_agent_standalone_CFLAGS) $(CFLAGS) -c -o daemon/gpg-agent/gkd_gpg_agent_standalone-gkd-gpg-agent-standalone.obj `if test -f 'daemon/gpg-agent/gkd-gpg-agent-standalone.c'; then $(CYGPATH_W) 'daemon/gpg-agent/gkd-gpg-agent-standalone.c'; else $(CYGPATH_W) '$(srcdir)/daemon/gpg-agent/gkd-gpg-agent-standalone.c'; fi`
5356
5357daemon/ssh-agent/gkd_ssh_agent_standalone-gkd-ssh-agent-standalone.o: daemon/ssh-agent/gkd-ssh-agent-standalone.c5313daemon/ssh-agent/gkd_ssh_agent_standalone-gkd-ssh-agent-standalone.o: daemon/ssh-agent/gkd-ssh-agent-standalone.c
5358@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gkd_ssh_agent_standalone_CFLAGS) $(CFLAGS) -MT daemon/ssh-agent/gkd_ssh_agent_standalone-gkd-ssh-agent-standalone.o -MD -MP -MF daemon/ssh-agent/$(DEPDIR)/gkd_ssh_agent_standalone-gkd-ssh-agent-standalone.Tpo -c -o daemon/ssh-agent/gkd_ssh_agent_standalone-gkd-ssh-agent-standalone.o `test -f 'daemon/ssh-agent/gkd-ssh-agent-standalone.c' || echo '$(srcdir)/'`daemon/ssh-agent/gkd-ssh-agent-standalone.c5314@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gkd_ssh_agent_standalone_CFLAGS) $(CFLAGS) -MT daemon/ssh-agent/gkd_ssh_agent_standalone-gkd-ssh-agent-standalone.o -MD -MP -MF daemon/ssh-agent/$(DEPDIR)/gkd_ssh_agent_standalone-gkd-ssh-agent-standalone.Tpo -c -o daemon/ssh-agent/gkd_ssh_agent_standalone-gkd-ssh-agent-standalone.o `test -f 'daemon/ssh-agent/gkd-ssh-agent-standalone.c' || echo '$(srcdir)/'`daemon/ssh-agent/gkd-ssh-agent-standalone.c
5359@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) daemon/ssh-agent/$(DEPDIR)/gkd_ssh_agent_standalone-gkd-ssh-agent-standalone.Tpo daemon/ssh-agent/$(DEPDIR)/gkd_ssh_agent_standalone-gkd-ssh-agent-standalone.Po5315@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) daemon/ssh-agent/$(DEPDIR)/gkd_ssh_agent_standalone-gkd-ssh-agent-standalone.Tpo daemon/ssh-agent/$(DEPDIR)/gkd_ssh_agent_standalone-gkd-ssh-agent-standalone.Po
53605316
=== modified file 'NEWS'
--- NEWS 2014-12-06 18:47:09 +0000
+++ NEWS 2015-02-27 19:55:06 +0000
@@ -1,3 +1,9 @@
1Changes in version 3.15.90 are:
2 * Fix leaks [#738508]
3 * Refactoring
4 * Build fixes [#740190]
5 * Updated translations
6
1Changes in version 3.14.0 are:7Changes in version 3.14.0 are:
2 * Remove residual GTK+ usage8 * Remove residual GTK+ usage
3 * Updated translations9 * Updated translations
410
=== modified file 'configure'
--- configure 2014-12-06 18:47:09 +0000
+++ configure 2015-02-27 19:55:06 +0000
@@ -1,6 +1,6 @@
1#! /bin/sh1#! /bin/sh
2# Guess values for system-dependent variables and create Makefiles.2# Guess values for system-dependent variables and create Makefiles.
3# Generated by GNU Autoconf 2.69 for gnome-keyring 3.14.0.3# Generated by GNU Autoconf 2.69 for gnome-keyring 3.15.90.
4#4#
5# Report bugs to <gnome-keyring-list@gnome.org>.5# Report bugs to <gnome-keyring-list@gnome.org>.
6#6#
@@ -590,8 +590,8 @@
590# Identity of this package.590# Identity of this package.
591PACKAGE_NAME='gnome-keyring'591PACKAGE_NAME='gnome-keyring'
592PACKAGE_TARNAME='gnome-keyring'592PACKAGE_TARNAME='gnome-keyring'
593PACKAGE_VERSION='3.14.0'593PACKAGE_VERSION='3.15.90'
594PACKAGE_STRING='gnome-keyring 3.14.0'594PACKAGE_STRING='gnome-keyring 3.15.90'
595PACKAGE_BUGREPORT='gnome-keyring-list@gnome.org'595PACKAGE_BUGREPORT='gnome-keyring-list@gnome.org'
596PACKAGE_URL='https://wiki.gnome.org/Projects/GnomeKeyring'596PACKAGE_URL='https://wiki.gnome.org/Projects/GnomeKeyring'
597597
@@ -1465,7 +1465,7 @@
1465 # Omit some internal or obsolete options to make the list less imposing.1465 # Omit some internal or obsolete options to make the list less imposing.
1466 # This message is too long to be a string in the A/UX 3.1 sh.1466 # This message is too long to be a string in the A/UX 3.1 sh.
1467 cat <<_ACEOF1467 cat <<_ACEOF
1468\`configure' configures gnome-keyring 3.14.0 to adapt to many kinds of systems.1468\`configure' configures gnome-keyring 3.15.90 to adapt to many kinds of systems.
14691469
1470Usage: $0 [OPTION]... [VAR=VALUE]...1470Usage: $0 [OPTION]... [VAR=VALUE]...
14711471
@@ -1535,7 +1535,7 @@
15351535
1536if test -n "$ac_init_help"; then1536if test -n "$ac_init_help"; then
1537 case $ac_init_help in1537 case $ac_init_help in
1538 short | recursive ) echo "Configuration of gnome-keyring 3.14.0:";;1538 short | recursive ) echo "Configuration of gnome-keyring 3.15.90:";;
1539 esac1539 esac
1540 cat <<\_ACEOF1540 cat <<\_ACEOF
15411541
@@ -1707,7 +1707,7 @@
1707test -n "$ac_init_help" && exit $ac_status1707test -n "$ac_init_help" && exit $ac_status
1708if $ac_init_version; then1708if $ac_init_version; then
1709 cat <<\_ACEOF1709 cat <<\_ACEOF
1710gnome-keyring configure 3.14.01710gnome-keyring configure 3.15.90
1711generated by GNU Autoconf 2.691711generated by GNU Autoconf 2.69
17121712
1713Copyright (C) 2012 Free Software Foundation, Inc.1713Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2130,7 +2130,7 @@
2130This file contains any messages produced by compilers while2130This file contains any messages produced by compilers while
2131running configure, to aid debugging if configure makes a mistake.2131running configure, to aid debugging if configure makes a mistake.
21322132
2133It was created by gnome-keyring $as_me 3.14.0, which was2133It was created by gnome-keyring $as_me 3.15.90, which was
2134generated by GNU Autoconf 2.69. Invocation command line was2134generated by GNU Autoconf 2.69. Invocation command line was
21352135
2136 $ $0 $@2136 $ $0 $@
@@ -3022,7 +3022,7 @@
30223022
3023# Define the identity of the package.3023# Define the identity of the package.
3024 PACKAGE='gnome-keyring'3024 PACKAGE='gnome-keyring'
3025 VERSION='3.14.0'3025 VERSION='3.15.90'
30263026
30273027
3028cat >>confdefs.h <<_ACEOF3028cat >>confdefs.h <<_ACEOF
@@ -17777,7 +17777,7 @@
17777# report actual input values of CONFIG_FILES etc. instead of their17777# report actual input values of CONFIG_FILES etc. instead of their
17778# values after options handling.17778# values after options handling.
17779ac_log="17779ac_log="
17780This file was extended by gnome-keyring $as_me 3.14.0, which was17780This file was extended by gnome-keyring $as_me 3.15.90, which was
17781generated by GNU Autoconf 2.69. Invocation command line was17781generated by GNU Autoconf 2.69. Invocation command line was
1778217782
17783 CONFIG_FILES = $CONFIG_FILES17783 CONFIG_FILES = $CONFIG_FILES
@@ -17844,7 +17844,7 @@
17844cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=117844cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
17845ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"17845ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
17846ac_cs_version="\\17846ac_cs_version="\\
17847gnome-keyring config.status 3.14.017847gnome-keyring config.status 3.15.90
17848configured by $0, generated by GNU Autoconf 2.69,17848configured by $0, generated by GNU Autoconf 2.69,
17849 with options \\"\$ac_cs_config\\"17849 with options \\"\$ac_cs_config\\"
1785017850
1785117851
=== modified file 'configure.ac'
--- configure.ac 2014-12-06 18:47:09 +0000
+++ configure.ac 2015-02-27 19:55:06 +0000
@@ -1,5 +1,5 @@
1AC_INIT(gnome-keyring,1AC_INIT(gnome-keyring,
2 3.14.0,2 3.15.90,
3 [gnome-keyring-list@gnome.org],3 [gnome-keyring-list@gnome.org],
4 [gnome-keyring],4 [gnome-keyring],
5 [https://wiki.gnome.org/Projects/GnomeKeyring])5 [https://wiki.gnome.org/Projects/GnomeKeyring])
66
=== modified file 'daemon/dbus/gkd-dbus.c'
--- daemon/dbus/gkd-dbus.c 2014-12-06 18:47:09 +0000
+++ daemon/dbus/gkd-dbus.c 2015-02-27 19:55:06 +0000
@@ -102,7 +102,6 @@
102102
103 const gchar **env;103 const gchar **env;
104 DBusMessageIter items, entry;104 DBusMessageIter items, entry;
105 gchar **parts;
106105
107 env = gkd_util_get_environment ();106 env = gkd_util_get_environment ();
108 g_return_val_if_fail (env, DBUS_HANDLER_RESULT_NOT_YET_HANDLED);107 g_return_val_if_fail (env, DBUS_HANDLER_RESULT_NOT_YET_HANDLED);
@@ -113,13 +112,17 @@
113 if (!dbus_message_iter_open_container (&args, DBUS_TYPE_ARRAY, "{ss}", &items))112 if (!dbus_message_iter_open_container (&args, DBUS_TYPE_ARRAY, "{ss}", &items))
114 g_return_val_if_reached (DBUS_HANDLER_RESULT_NEED_MEMORY);113 g_return_val_if_reached (DBUS_HANDLER_RESULT_NEED_MEMORY);
115 while (*env) {114 while (*env) {
115 gchar **parts;
116 parts = g_strsplit (*env, "=", 2);116 parts = g_strsplit (*env, "=", 2);
117 g_return_val_if_fail (parts && parts[0] && parts[1], DBUS_HANDLER_RESULT_NOT_YET_HANDLED);117 g_return_val_if_fail (parts && parts[0] && parts[1], DBUS_HANDLER_RESULT_NOT_YET_HANDLED);
118 if (!dbus_message_iter_open_container (&items, DBUS_TYPE_DICT_ENTRY, NULL, &entry) ||118 if (!dbus_message_iter_open_container (&items, DBUS_TYPE_DICT_ENTRY, NULL, &entry) ||
119 !dbus_message_iter_append_basic (&entry, DBUS_TYPE_STRING, &parts[0]) ||119 !dbus_message_iter_append_basic (&entry, DBUS_TYPE_STRING, &parts[0]) ||
120 !dbus_message_iter_append_basic (&entry, DBUS_TYPE_STRING, &parts[1]) ||120 !dbus_message_iter_append_basic (&entry, DBUS_TYPE_STRING, &parts[1]) ||
121 !dbus_message_iter_close_container (&items, &entry))121 !dbus_message_iter_close_container (&items, &entry)) {
122 g_strfreev (parts);
122 g_return_val_if_reached (DBUS_HANDLER_RESULT_NEED_MEMORY);123 g_return_val_if_reached (DBUS_HANDLER_RESULT_NEED_MEMORY);
124 }
125 g_strfreev (parts);
123 ++env;126 ++env;
124 }127 }
125 if (!dbus_message_iter_close_container (&args, &items))128 if (!dbus_message_iter_close_container (&args, &items))
126129
=== modified file 'daemon/dbus/gkd-secret-service.c'
--- daemon/dbus/gkd-secret-service.c 2014-12-06 18:47:09 +0000
+++ daemon/dbus/gkd-secret-service.c 2015-02-27 19:55:06 +0000
@@ -1245,6 +1245,9 @@
1245 g_hash_table_destroy (self->aliases);1245 g_hash_table_destroy (self->aliases);
1246 self->aliases = NULL;1246 self->aliases = NULL;
12471247
1248 g_free (self->alias_directory);
1249 self->alias_directory = NULL;
1250
1248 G_OBJECT_CLASS (gkd_secret_service_parent_class)->finalize (obj);1251 G_OBJECT_CLASS (gkd_secret_service_parent_class)->finalize (obj);
1249}1252}
12501253
12511254
=== modified file 'daemon/dbus/test-dbus-items.c'
--- daemon/dbus/test-dbus-items.c 2014-04-06 23:26:34 +0000
+++ daemon/dbus/test-dbus-items.c 2015-02-27 19:55:06 +0000
@@ -159,8 +159,10 @@
159 g_assert_cmpuint (modified, >, (g_get_real_time () / G_TIME_SPAN_SECOND) - 10);159 g_assert_cmpuint (modified, >, (g_get_real_time () / G_TIME_SPAN_SECOND) - 10);
160 g_assert_cmpuint (created, ==, modified);160 g_assert_cmpuint (created, ==, modified);
161161
162 if (!g_test_thorough ())162 if (!g_test_thorough ()) {
163 g_free (item);
163 return;164 return;
165 }
164166
165 /* Unfortunately have to wait 1.25 seconds here */167 /* Unfortunately have to wait 1.25 seconds here */
166 g_usleep (G_TIME_SPAN_SECOND + (G_TIME_SPAN_SECOND / 4));168 g_usleep (G_TIME_SPAN_SECOND + (G_TIME_SPAN_SECOND / 4));
167169
=== modified file 'daemon/gpg-agent/Makefile.am'
--- daemon/gpg-agent/Makefile.am 2014-12-06 18:47:09 +0000
+++ daemon/gpg-agent/Makefile.am 2015-02-27 19:55:06 +0000
@@ -13,18 +13,3 @@
13libgkd_gpg_agent_la_CFLAGS = \13libgkd_gpg_agent_la_CFLAGS = \
14 $(GCK_CFLAGS) \14 $(GCK_CFLAGS) \
15 $(GCR_CFLAGS)15 $(GCR_CFLAGS)
16
17# ------------------------------------------------------------------------------
18# Standalone binary
19
20noinst_PROGRAMS += \
21 gkd-gpg-agent-standalone
22
23gkd_gpg_agent_standalone_SOURCES = \
24 daemon/gpg-agent/gkd-gpg-agent-standalone.c
25gkd_gpg_agent_standalone_CFLAGS = \
26 $(GCK_CFLAGS)
27gkd_gpg_agent_standalone_LDADD = \
28 libgkd-gpg-agent.la \
29 libegg.la \
30 $(DAEMON_LIBS)
3116
=== modified file 'daemon/gpg-agent/gkd-gpg-agent-ops.c'
--- daemon/gpg-agent/gkd-gpg-agent-ops.c 2014-12-06 18:47:09 +0000
+++ daemon/gpg-agent/gkd-gpg-agent-ops.c 2015-02-27 19:55:06 +0000
@@ -23,6 +23,8 @@
23#include "gkd-gpg-agent.h"23#include "gkd-gpg-agent.h"
24#include "gkd-gpg-agent-private.h"24#include "gkd-gpg-agent-private.h"
2525
26#include "daemon/login/gkd-login.h"
27
26#include "egg/egg-error.h"28#include "egg/egg-error.h"
27#include "egg/egg-secure-memory.h"29#include "egg/egg-secure-memory.h"
2830
@@ -48,31 +50,6 @@
48 * PASSWORD STUFF50 * PASSWORD STUFF
49 */51 */
5052
51static void
52keyid_to_field_attribute (const gchar *keyid,
53 GckBuilder *attrs)
54{
55 GString *fields = g_string_sized_new (128);
56
57 g_assert (keyid);
58 g_assert (attrs);
59
60 /* Remember that attribute names are sorted */
61
62 g_string_append (fields, "keyid");
63 g_string_append_c (fields, '\0');
64 g_string_append (fields, keyid);
65 g_string_append_c (fields, '\0');
66
67 g_string_append (fields, "source");
68 g_string_append_c (fields, '\0');
69 g_string_append (fields, "gnome-keyring:gpg-agent");
70 g_string_append_c (fields, '\0');
71
72 gck_builder_add_data (attrs, CKA_G_FIELDS, (const guchar *)fields->str, fields->len);
73 g_string_free (fields, TRUE);
74}
75
76static gchar*53static gchar*
77calculate_label_for_key (const gchar *keyid, const gchar *description)54calculate_label_for_key (const gchar *keyid, const gchar *description)
78{55{
@@ -107,191 +84,11 @@
107 return label;84 return label;
108}85}
10986
110static GList*
111find_saved_items (GckSession *session, GckAttributes *attrs)
112{
113 GckBuilder builder = GCK_BUILDER_INIT;
114 GError *error = NULL;
115 const GckAttribute *attr;
116 GckObject *search;
117 GList *results;
118 gpointer data;
119 gsize n_data;
120
121 gck_builder_add_ulong (&builder, CKA_CLASS, CKO_G_SEARCH);
122 gck_builder_add_boolean (&builder, CKA_TOKEN, FALSE);
123
124 attr = gck_attributes_find (attrs, CKA_G_COLLECTION);
125 if (attr != NULL)
126 gck_builder_add_attribute (&builder, attr);
127
128 attr = gck_attributes_find (attrs, CKA_G_FIELDS);
129 g_return_val_if_fail (attr != NULL, NULL);
130 gck_builder_add_attribute (&builder, attr);
131
132 search = gck_session_create_object (session, gck_builder_end (&builder), NULL, &error);
133 if (search == NULL) {
134 g_warning ("couldn't perform search for gpg agent stored passphrases: %s",
135 egg_error_message (error));
136 g_clear_error (&error);
137 return NULL;
138 }
139
140 data = gck_object_get_data (search, CKA_G_MATCHED, NULL, &n_data, &error);
141 gck_object_destroy (search, NULL, NULL);
142 g_object_unref (search);
143
144 if (data == NULL) {
145 g_warning ("couldn't retrieve list of gpg agent stored passphrases: %s",
146 egg_error_message (error));
147 g_clear_error (&error);
148 return NULL;
149 }
150
151 results = gck_objects_from_handle_array (session, data, n_data / sizeof (CK_ULONG));
152
153 g_free (data);
154 return results;
155}
156
157static void87static void
158do_save_password (GckSession *session, const gchar *keyid, const gchar *description,
159 const gchar *password, GckAttributes *options)
160{
161 GckBuilder builder;
162 GckAttributes *attrs;
163 gpointer identifier;
164 gsize n_identifier;
165 GList *previous;
166 GError *error = NULL;
167 GckObject *item;
168 gchar *text;
169 gchar *label;
170 gint i;
171
172 g_assert (password);
173
174 /* Can't save anything if there was no keyid */
175 if (keyid == NULL)
176 return;
177
178 /* Sending a password, needs to be secure */
179 gck_builder_init_full (&builder, GCK_BUILDER_SECURE_MEMORY);
180
181 /* Build up basic set of attributes */
182 gck_builder_add_boolean (&builder, CKA_TOKEN, TRUE);
183 gck_builder_add_ulong (&builder, CKA_CLASS, CKO_SECRET_KEY);
184 keyid_to_field_attribute (keyid, &builder);
185
186 /* Bring in all the unlock options */
187 for (i = 0; options && i < gck_attributes_count (options); ++i)
188 gck_builder_add_attribute (&builder, gck_attributes_at (options, i));
189
190 /* Find a previously stored object like this, and replace if so */
191 attrs = gck_attributes_ref_sink (gck_builder_end (&builder));
192 previous = find_saved_items (session, attrs);
193 if (previous) {
194 identifier = gck_object_get_data (previous->data, CKA_ID, NULL, &n_identifier, NULL);
195 if (identifier != NULL)
196 gck_builder_add_data (&builder, CKA_ID, identifier, n_identifier);
197 g_free (identifier);
198 gck_list_unref_free (previous);
199 }
200
201 text = calculate_label_for_key (keyid, description);
202 label = g_strdup_printf (_("PGP Key: %s"), text);
203 g_free (text);
204
205 /* Put in the remainder of the attributes */
206 gck_builder_add_all (&builder, attrs);
207 gck_builder_add_string (&builder, CKA_VALUE, password);
208 gck_builder_add_string (&builder, CKA_LABEL, label);
209 gck_attributes_unref (attrs);
210 g_free (label);
211
212 item = gck_session_create_object (session, gck_builder_end (&builder), NULL, &error);
213 if (item == NULL) {
214 g_warning ("couldn't store gpg agent password: %s", egg_error_message (error));
215 g_clear_error (&error);
216 }
217
218 if (item != NULL)
219 g_object_unref (item);
220}
221
222static gboolean
223do_clear_password (GckSession *session, const gchar *keyid)88do_clear_password (GckSession *session, const gchar *keyid)
224{89{
225 GckBuilder builder = GCK_BUILDER_INIT;90 gkd_login_clear_password (session, "keyid", keyid,
226 GckAttributes *attrs;91 "source", "gnome-keyring:gpg-agent", NULL);
227 GList *objects, *l;
228 GError *error = NULL;
229
230 gck_builder_add_ulong (&builder, CKA_CLASS, CKO_SECRET_KEY);
231 keyid_to_field_attribute (keyid, &builder);
232
233 attrs = gck_attributes_ref_sink (gck_builder_end (&builder));
234 objects = find_saved_items (session, attrs);
235 gck_attributes_unref (attrs);
236
237 if (!objects)
238 return TRUE;
239
240 /* Delete first item */
241 for (l = objects; l; l = g_list_next (l)) {
242 if (gck_object_destroy (l->data, NULL, &error)) {
243 break; /* Only delete the first item */
244 } else {
245 g_warning ("couldn't clear gpg agent password: %s",
246 egg_error_message (error));
247 g_clear_error (&error);
248 }
249 }
250
251 gck_list_unref_free (objects);
252 return TRUE;
253}
254
255static gchar*
256do_lookup_password (GckSession *session, const gchar *keyid)
257{
258 GckBuilder builder = GCK_BUILDER_INIT;
259 GckAttributes *attrs;
260 GList *objects, *l;
261 GError *error = NULL;
262 gpointer data = NULL;
263 gsize n_data;
264
265 if (keyid == NULL)
266 return NULL;
267
268 gck_builder_add_ulong (&builder, CKA_CLASS, CKO_SECRET_KEY);
269 keyid_to_field_attribute (keyid, &builder);
270
271 attrs = gck_attributes_ref_sink (gck_builder_end (&builder));
272 objects = find_saved_items (session, attrs);
273 gck_attributes_unref (attrs);
274
275 if (!objects)
276 return NULL;
277
278 /* Return first password */
279 for (l = objects; l; l = g_list_next (l)) {
280 data = gck_object_get_data_full (l->data, CKA_VALUE, egg_secure_realloc, NULL, &n_data, &error);
281 if (error) {
282 if (!g_error_matches (error, GCK_ERROR, CKR_USER_NOT_LOGGED_IN))
283 g_warning ("couldn't lookup gpg agent password: %s", egg_error_message (error));
284 g_clear_error (&error);
285 data = NULL;
286 } else {
287 break;
288 }
289 }
290
291 gck_list_unref_free (objects);
292
293 /* Data is null terminated */
294 return data;
295}92}
29693
297static void94static void
@@ -330,11 +127,9 @@
330 const gchar *description,127 const gchar *description,
331 gboolean confirm)128 gboolean confirm)
332{129{
333 GckBuilder builder = GCK_BUILDER_INIT;
334 GcrPrompt *prompt;130 GcrPrompt *prompt;
335 GError *error = NULL;131 GError *error = NULL;
336 gboolean auto_unlock;132 gboolean auto_unlock;
337 GList *objects;
338 const gchar *choice;133 const gchar *choice;
339134
340 g_assert (GCK_IS_SESSION (session));135 g_assert (GCK_IS_SESSION (session));
@@ -360,23 +155,7 @@
360 gcr_prompt_set_choice_label (prompt, NULL);155 gcr_prompt_set_choice_label (prompt, NULL);
361156
362 } else {157 } else {
363 auto_unlock = FALSE;158 auto_unlock = gkd_login_available (session);
364
365 gck_builder_add_ulong (&builder, CKA_CLASS, CKO_G_COLLECTION);
366 gck_builder_add_string (&builder, CKA_ID, "login");
367 gck_builder_add_boolean (&builder, CKA_G_LOCKED, FALSE);
368
369 /* Check if the login keyring is usable */
370 objects = gck_session_find_objects (session, gck_builder_end (&builder), NULL, &error);
371
372 if (error) {
373 g_warning ("gpg agent couldn't lookup for login keyring: %s", egg_error_message (error));
374 g_clear_error (&error);
375 } else if (objects) {
376 auto_unlock = TRUE;
377 }
378
379 gck_list_unref_free (objects);
380159
381 choice = NULL;160 choice = NULL;
382 if (auto_unlock)161 if (auto_unlock)
@@ -393,20 +172,21 @@
393do_get_password (GckSession *session, const gchar *keyid, const gchar *errmsg,172do_get_password (GckSession *session, const gchar *keyid, const gchar *errmsg,
394 const gchar *prompt_text, const gchar *description, gboolean confirm)173 const gchar *prompt_text, const gchar *description, gboolean confirm)
395{174{
396 GckBuilder builder = GCK_BUILDER_INIT;
397 GSettings *settings;175 GSettings *settings;
398 GckAttributes *attrs;
399 gchar *password = NULL;176 gchar *password = NULL;
400 GcrPrompt *prompt;177 GcrPrompt *prompt;
401 gboolean chosen;178 gboolean chosen;
402 GError *error = NULL;179 GError *error = NULL;
403 gint lifetime;180 gint lifetime;
404 gchar *method;181 gchar *method;
182 gchar *label;
183 gchar *text;
405184
406 g_assert (GCK_IS_SESSION (session));185 g_assert (GCK_IS_SESSION (session));
407186
408 /* Do we have the keyid? */187 /* Do we have the keyid? */
409 password = do_lookup_password (session, keyid);188 password = gkd_login_lookup_password (session, "keyid", keyid,
189 "source", "gnome-keyring:gpg-agent", NULL);
410 if (password != NULL)190 if (password != NULL)
411 return password;191 return password;
412192
@@ -428,33 +208,26 @@
428 chosen = gcr_prompt_get_choice_chosen (prompt);208 chosen = gcr_prompt_get_choice_chosen (prompt);
429209
430 if (chosen) {210 if (chosen) {
431 g_settings_set_string (settings, "gpg-cache-method", GCR_UNLOCK_OPTION_ALWAYS);211 method = g_strdup (GCR_UNLOCK_OPTION_ALWAYS);
432 gck_builder_add_string (&builder, CKA_G_COLLECTION, "login");212 lifetime = -1;
433213
434 } else {214 } else {
435 method = g_settings_get_string (settings, "gpg-cache-method");215 method = g_settings_get_string (settings, "gpg-cache-method");
436 lifetime = g_settings_get_int (settings, "gpg-cache-ttl");216 lifetime = g_settings_get_int (settings, "gpg-cache-ttl");
437217 if (g_str_equal (method, GCR_UNLOCK_OPTION_ALWAYS)) {
438 if (g_strcmp0 (method, GCR_UNLOCK_OPTION_IDLE) == 0) {218 g_free (method);
439 gck_builder_add_boolean (&builder, CKA_GNOME_TRANSIENT, TRUE);219 method = NULL;
440 gck_builder_add_ulong (&builder, CKA_G_DESTRUCT_IDLE, lifetime);
441
442 } else if (g_strcmp0 (method, GCR_UNLOCK_OPTION_TIMEOUT) == 0) {
443 gck_builder_add_boolean (&builder, CKA_GNOME_TRANSIENT, TRUE);
444 gck_builder_add_ulong (&builder, CKA_G_DESTRUCT_AFTER, lifetime);
445
446 } else if (g_strcmp0 (method, GCR_UNLOCK_OPTION_SESSION)){
447 g_message ("Unsupported gpg-cache-method setting: %s", method);
448 }220 }
449
450 gck_builder_add_string (&builder, CKA_G_COLLECTION, "session");
451 g_free (method);
452 }221 }
453222
454 /* Now actually save the password */223 /* Now actually save the password */
455 attrs = gck_attributes_ref_sink (gck_builder_end (&builder));224 text = calculate_label_for_key (keyid, description);
456 do_save_password (session, keyid, description, password, attrs);225 label = g_strdup_printf (_("PGP Key: %s"), text);
457 gck_attributes_unref (attrs);226 gkd_login_store_password (session, password, label, method, lifetime,
227 "keyid", keyid, "source", "gnome-keyring:gpg-agent", NULL);
228 g_free (label);
229 g_free (method);
230 g_free (text);
458 }231 }
459232
460 g_clear_object (&prompt);233 g_clear_object (&prompt);
461234
=== removed file 'daemon/gpg-agent/gkd-gpg-agent-standalone.c'
--- daemon/gpg-agent/gkd-gpg-agent-standalone.c 2014-12-06 18:47:09 +0000
+++ daemon/gpg-agent/gkd-gpg-agent-standalone.c 1970-01-01 00:00:00 +0000
@@ -1,123 +0,0 @@
1/*
2 * gnome-keyring
3 *
4 * Copyright (C) 2010 Stefan Walter
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU Lesser General Public License as
8 * published by the Free Software Foundation; either version 2.1 of
9 * the License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful, but
12 * WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this program; if not, see
18 * <http://www.gnu.org/licenses/>.
19 */
20
21#include "config.h"
22
23#include "gkd-gpg-agent.h"
24#include "gkd-gpg-agent-private.h"
25
26#include "egg/egg-error.h"
27#include "egg/egg-secure-memory.h"
28
29#include <gck/gck.h>
30
31#include <glib.h>
32#include <glib-object.h>
33
34#include <pwd.h>
35#include <string.h>
36#include <unistd.h>
37
38EGG_SECURE_DEFINE_GLIB_GLOBALS ();
39
40static gboolean
41accept_client (GIOChannel *channel, GIOCondition cond, gpointer unused)
42{
43 gkd_gpg_agent_accept ();
44 return TRUE;
45}
46
47static gboolean
48authenticate_slot (GckModule *module, GckSlot *slot, gchar *label, gchar **password, gpointer unused)
49{
50 gchar *prompt = g_strdup_printf ("Enter token password (%s): ", label);
51 char *result = getpass (prompt);
52 g_free (prompt);
53 *password = g_strdup (result);
54 memset (result, 0, strlen (result));
55 return TRUE;
56}
57
58static gboolean
59authenticate_object (GckModule *module, GckObject *object, gchar *label, gchar **password)
60{
61 gchar *prompt = g_strdup_printf ("Enter object password (%s): ", label);
62 char *result = getpass (prompt);
63 g_free (prompt);
64 *password = g_strdup (result);
65 memset (result, 0, strlen (result));
66 return TRUE;
67}
68
69int
70main(int argc, char *argv[])
71{
72 GckModule *module;
73 GError *error = NULL;
74 GIOChannel *channel;
75 GMainLoop *loop;
76 gboolean ret;
77 int sock;
78
79#if !GLIB_CHECK_VERSION(2,35,0)
80 g_type_init ();
81#endif
82
83 if (argc <= 1) {
84 g_message ("specify pkcs11 module on the command line");
85 return 1;
86 }
87
88 module = gck_module_initialize (argv[1], NULL, &error);
89 if (!module) {
90 g_message ("couldn't load pkcs11 module: %s", egg_error_message (error));
91 g_clear_error (&error);
92 return 1;
93 }
94
95 g_signal_connect (module, "authenticate-slot", G_CALLBACK (authenticate_slot), NULL);
96 g_signal_connect (module, "authenticate-object", G_CALLBACK (authenticate_object), NULL);
97
98 ret = gkd_gpg_agent_initialize_with_module (module);
99 g_object_unref (module);
100
101 if (ret == FALSE)
102 return 1;
103
104 sock = gkd_gpg_agent_startup ("/tmp");
105 if (sock == -1)
106 return 1;
107
108 channel = g_io_channel_unix_new (sock);
109 g_io_add_watch (channel, G_IO_IN | G_IO_HUP, accept_client, NULL);
110 g_io_channel_unref (channel);
111
112 g_print ("GPG_AGENT_INFO=%s\n", g_getenv ("GPG_AGENT_INFO"));
113
114 /* Run a main loop */
115 loop = g_main_loop_new (NULL, FALSE);
116 g_main_loop_run (loop);
117 g_main_loop_unref (loop);
118
119 gkd_gpg_agent_shutdown ();
120 gkd_gpg_agent_uninitialize ();
121
122 return 0;
123}
1240
=== modified file 'daemon/gpg-agent/gkd-gpg-agent.c'
--- daemon/gpg-agent/gkd-gpg-agent.c 2014-12-06 18:47:09 +0000
+++ daemon/gpg-agent/gkd-gpg-agent.c 2015-02-27 19:55:06 +0000
@@ -207,6 +207,7 @@
207 }207 }
208208
209 g_io_channel_shutdown (call.channel, FALSE, NULL);209 g_io_channel_shutdown (call.channel, FALSE, NULL);
210 g_io_channel_unref (call.channel);
210 g_object_unref (call.module);211 g_object_unref (call.module);
211212
212 close (call.sock);213 close (call.sock);
213214
=== modified file 'daemon/login/Makefile.am'
--- daemon/login/Makefile.am 2014-12-06 18:47:09 +0000
+++ daemon/login/Makefile.am 2015-02-27 19:55:06 +0000
@@ -10,6 +10,7 @@
10 $(NULL)10 $(NULL)
11libgkd_login_la_CFLAGS = \11libgkd_login_la_CFLAGS = \
12 $(GCK_CFLAGS) \12 $(GCK_CFLAGS) \
13 $(GCR_CFLAGS) \
13 $(GOBJECT_CFLAGS)14 $(GOBJECT_CFLAGS)
14libgkd_login_la_LIBADD = \15libgkd_login_la_LIBADD = \
15 $(GCK_LIBS) \16 $(GCK_LIBS) \
1617
=== modified file 'daemon/login/gkd-login.c'
--- daemon/login/gkd-login.c 2014-12-06 18:47:09 +0000
+++ daemon/login/gkd-login.c 2015-02-27 19:55:06 +0000
@@ -31,11 +31,14 @@
31#include "pkcs11/wrap-layer/gkm-wrap-layer.h"31#include "pkcs11/wrap-layer/gkm-wrap-layer.h"
3232
33#include <gck/gck.h>33#include <gck/gck.h>
34#include <gcr/gcr-unlock-options.h>
3435
35#include <glib/gi18n.h>36#include <glib/gi18n.h>
3637
37#include <string.h>38#include <string.h>
3839
40EGG_SECURE_DECLARE (gkd_login);
41
39static GList*42static GList*
40module_instances (void)43module_instances (void)
41{44{
@@ -82,6 +85,10 @@
82 GckSlot *slot = NULL;85 GckSlot *slot = NULL;
83 GError *error = NULL;86 GError *error = NULL;
84 GckSession *session;87 GckSession *session;
88 GList *owned = NULL;
89
90 if (modules == NULL)
91 modules = owned = module_instances ();
8592
86 slot = gck_modules_token_for_uri (modules, "pkcs11:token=Secret%20Store", &error);93 slot = gck_modules_token_for_uri (modules, "pkcs11:token=Secret%20Store", &error);
87 if (!slot) {94 if (!slot) {
@@ -96,6 +103,7 @@
96 }103 }
97104
98 g_object_unref (slot);105 g_object_unref (slot);
106 g_list_free_full (owned, g_object_unref);
99107
100 return session;108 return session;
101}109}
@@ -415,3 +423,295 @@
415 gck_list_unref_free (modules);423 gck_list_unref_free (modules);
416 return result;424 return result;
417}425}
426
427gboolean
428gkd_login_available (GckSession *session)
429{
430 GckBuilder builder = GCK_BUILDER_INIT;
431 gboolean available = FALSE;
432 GError *error = NULL;
433 GList *objects;
434
435 if (!session)
436 session = lookup_login_session (NULL);
437 else
438 g_object_ref (session);
439
440 if (session) {
441 gck_builder_add_ulong (&builder, CKA_CLASS, CKO_G_COLLECTION);
442 gck_builder_add_string (&builder, CKA_ID, "login");
443 gck_builder_add_boolean (&builder, CKA_G_LOCKED, FALSE);
444
445 /* Check if the login keyring is usable */
446 objects = gck_session_find_objects (session, gck_builder_end (&builder), NULL, &error);
447 if (error) {
448 g_warning ("couldn't lookup login keyring: %s", error->message);
449 g_clear_error (&error);
450 } else if (objects) {
451 available = TRUE;
452 }
453 g_list_free_full (objects, g_object_unref);
454 }
455
456 g_object_unref (session);
457 return available;
458}
459
460static GList *
461find_saved_items (GckSession *session,
462 GckAttributes *attrs)
463{
464 GckBuilder builder = GCK_BUILDER_INIT;
465 GError *error = NULL;
466 const GckAttribute *attr;
467 GckObject *search;
468 GList *results;
469 gpointer data;
470 gsize n_data;
471
472 gck_builder_add_ulong (&builder, CKA_CLASS, CKO_G_SEARCH);
473 gck_builder_add_boolean (&builder, CKA_TOKEN, FALSE);
474
475 attr = gck_attributes_find (attrs, CKA_G_COLLECTION);
476 if (attr != NULL)
477 gck_builder_add_attribute (&builder, attr);
478
479 attr = gck_attributes_find (attrs, CKA_G_FIELDS);
480 g_return_val_if_fail (attr != NULL, NULL);
481 gck_builder_add_attribute (&builder, attr);
482
483 search = gck_session_create_object (session, gck_builder_end (&builder), NULL, &error);
484 if (search == NULL) {
485 g_warning ("couldn't perform search for gpg agent stored passphrases: %s",
486 egg_error_message (error));
487 g_clear_error (&error);
488 return NULL;
489 }
490
491 data = gck_object_get_data (search, CKA_G_MATCHED, NULL, &n_data, &error);
492 gck_object_destroy (search, NULL, NULL);
493 g_object_unref (search);
494
495 if (data == NULL) {
496 g_warning ("couldn't retrieve list of gpg agent stored passphrases: %s",
497 egg_error_message (error));
498 g_clear_error (&error);
499 return NULL;
500 }
501
502 results = gck_objects_from_handle_array (session, data, n_data / sizeof (CK_ULONG));
503
504 g_free (data);
505 return results;
506}
507
508static gboolean
509fields_to_attribute (GckBuilder *builder,
510 const gchar *field,
511 va_list va)
512{
513 GString *fields = g_string_sized_new (128);
514 const gchar *last = NULL;
515 const gchar *value;
516
517 while (field) {
518 if (g_strcmp0 (last, field) >= 0) {
519 g_critical ("lookup fields must be sorted '%s' >= '%s'", last, field);
520 return FALSE;
521 }
522
523 last = field;
524 value = va_arg (va, const gchar *);
525 g_return_val_if_fail (value != NULL, FALSE);
526
527 g_string_append (fields, field);
528 g_string_append_c (fields, '\0');
529 g_string_append (fields, value);
530 g_string_append_c (fields, '\0');
531
532 field = va_arg (va, const gchar *);
533 }
534
535 gck_builder_add_data (builder, CKA_G_FIELDS, (const guchar *)fields->str, fields->len);
536 g_string_free (fields, TRUE);
537 return TRUE;
538}
539
540gchar *
541gkd_login_lookup_password (GckSession *session,
542 const gchar *field,
543 ...)
544{
545 GckBuilder builder = GCK_BUILDER_INIT;
546 GckAttributes *attrs;
547 GList *objects, *l;
548 GError *error = NULL;
549 gpointer data = NULL;
550 gsize length;
551 va_list va;
552
553 if (!session)
554 session = lookup_login_session (NULL);
555 else
556 session = g_object_ref (session);
557 if (!session)
558 return NULL;
559
560 gck_builder_add_ulong (&builder, CKA_CLASS, CKO_SECRET_KEY);
561
562 va_start (va, field);
563 if (!fields_to_attribute (&builder, field, va))
564 g_return_val_if_reached (FALSE);
565 va_end (va);
566
567 attrs = gck_attributes_ref_sink (gck_builder_end (&builder));
568 objects = find_saved_items (session, attrs);
569 gck_attributes_unref (attrs);
570
571 /* Return first password */
572 data = NULL;
573 for (l = objects; l; l = g_list_next (l)) {
574 data = gck_object_get_data_full (l->data, CKA_VALUE, egg_secure_realloc, NULL, &length, &error);
575 if (error) {
576 if (!g_error_matches (error, GCK_ERROR, CKR_USER_NOT_LOGGED_IN))
577 g_warning ("couldn't lookup gpg agent password: %s", egg_error_message (error));
578 g_clear_error (&error);
579 data = NULL;
580 } else {
581 break;
582 }
583 }
584
585 g_list_free_full (objects, g_object_unref);
586 g_object_unref (session);
587
588 /* Data is null terminated */
589 return data;
590}
591
592void
593gkd_login_clear_password (GckSession *session,
594 const gchar *field,
595 ...)
596{
597 GckBuilder builder = GCK_BUILDER_INIT;
598 GckAttributes *attrs;
599 GList *objects, *l;
600 GError *error = NULL;
601 va_list va;
602
603 if (!session)
604 session = lookup_login_session (NULL);
605 else
606 session = g_object_ref (session);
607 if (!session)
608 return;
609
610 gck_builder_add_ulong (&builder, CKA_CLASS, CKO_SECRET_KEY);
611
612 va_start (va, field);
613 if (!fields_to_attribute (&builder, field, va))
614 g_return_if_reached ();
615 va_end (va);
616
617 attrs = gck_attributes_ref_sink (gck_builder_end (&builder));
618 objects = find_saved_items (session, attrs);
619 gck_attributes_unref (attrs);
620
621 /* Delete first item */
622 for (l = objects; l; l = g_list_next (l)) {
623 if (gck_object_destroy (l->data, NULL, &error))
624 break; /* Only delete the first item */
625 g_warning ("couldn't clear assword: %s", error->message);
626 g_clear_error (&error);
627 }
628
629 g_list_free_full (objects, g_object_unref);
630 g_object_unref (session);
631}
632
633gboolean
634gkd_login_store_password (GckSession *session,
635 const gchar *password,
636 const gchar *label,
637 const gchar *method,
638 gint lifetime,
639 const gchar *field,
640 ...)
641{
642 GckBuilder builder = GCK_BUILDER_INIT;
643 GckAttributes *attrs;
644 guchar *identifier;
645 GList *previous;
646 gboolean ret = FALSE;
647 GckObject *item;
648 GError *error = NULL;
649 gsize length;
650 va_list va;
651
652 if (!method)
653 method = GCR_UNLOCK_OPTION_SESSION;
654
655 if (!session)
656 session = lookup_login_session (NULL);
657 else
658 session = g_object_ref (session);
659 if (!session)
660 return FALSE;
661
662 va_start (va, field);
663 if (!fields_to_attribute (&builder, field, va))
664 g_return_val_if_reached (FALSE);
665 va_end (va);
666
667 if (g_str_equal (method, GCR_UNLOCK_OPTION_ALWAYS)) {
668 gck_builder_add_string (&builder, CKA_G_COLLECTION, "login");
669
670 } else {
671 if (g_str_equal (method, GCR_UNLOCK_OPTION_IDLE)) {
672 gck_builder_add_boolean (&builder, CKA_GNOME_TRANSIENT, TRUE);
673 gck_builder_add_ulong (&builder, CKA_G_DESTRUCT_IDLE, lifetime);
674
675 } else if (g_str_equal (method, GCR_UNLOCK_OPTION_TIMEOUT)) {
676 gck_builder_add_boolean (&builder, CKA_GNOME_TRANSIENT, TRUE);
677 gck_builder_add_ulong (&builder, CKA_G_DESTRUCT_AFTER, lifetime);
678
679 } else if (!g_str_equal (method, GCR_UNLOCK_OPTION_SESSION)) {
680 g_message ("Unsupported gpg-cache-method setting: %s", method);
681 }
682 gck_builder_add_string (&builder, CKA_G_COLLECTION, "session");
683 }
684
685 gck_builder_add_boolean (&builder, CKA_TOKEN, TRUE);
686 gck_builder_add_ulong (&builder, CKA_CLASS, CKO_SECRET_KEY);
687
688 /* Find a previously stored object like this, and replace if so */
689 attrs = gck_attributes_ref_sink (gck_builder_end (&builder));
690 previous = find_saved_items (session, attrs);
691 if (previous) {
692 identifier = gck_object_get_data (previous->data, CKA_ID, NULL, &length, NULL);
693 if (identifier != NULL)
694 gck_builder_add_data (&builder, CKA_ID, identifier, length);
695 g_free (identifier);
696 g_list_free_full (previous, g_object_unref);
697 }
698
699 /* Put in the remainder of the attributes */
700 gck_builder_add_all (&builder, attrs);
701 gck_builder_add_string (&builder, CKA_VALUE, password);
702 gck_builder_add_string (&builder, CKA_LABEL, label);
703 gck_attributes_unref (attrs);
704
705 item = gck_session_create_object (session, gck_builder_end (&builder), NULL, &error);
706 if (item == NULL) {
707 g_warning ("couldn't store gpg agent password: %s", egg_error_message (error));
708 g_clear_error (&error);
709 ret = FALSE;
710 } else {
711 g_object_unref (item);
712 ret = TRUE;
713 }
714
715 g_object_unref (session);
716 return ret;
717}
418718
=== modified file 'daemon/login/gkd-login.h'
--- daemon/login/gkd-login.h 2014-04-06 23:26:34 +0000
+++ daemon/login/gkd-login.h 2015-02-27 19:55:06 +0000
@@ -23,9 +23,29 @@
2323
24#include <glib.h>24#include <glib.h>
2525
26typedef struct _GckSession GckSession;
27
26gboolean gkd_login_unlock (const gchar *master);28gboolean gkd_login_unlock (const gchar *master);
2729
28gboolean gkd_login_change_lock (const gchar *original,30gboolean gkd_login_change_lock (const gchar *original,
29 const gchar *master);31 const gchar *master);
3032
33gboolean gkd_login_available (GckSession *session);
34
35gchar * gkd_login_lookup_password (GckSession *session,
36 const gchar *field,
37 ...) G_GNUC_NULL_TERMINATED;
38
39void gkd_login_clear_password (GckSession *session,
40 const gchar *field,
41 ...) G_GNUC_NULL_TERMINATED;
42
43gboolean gkd_login_store_password (GckSession *session,
44 const gchar *password,
45 const gchar *label,
46 const gchar *method,
47 gint lifetime,
48 const gchar *field,
49 ...) G_GNUC_NULL_TERMINATED;
50
31#endif /* __GKD_LOGIN_H__ */51#endif /* __GKD_LOGIN_H__ */
3252
=== modified file 'daemon/ssh-agent/gkd-ssh-agent-ops.c'
--- daemon/ssh-agent/gkd-ssh-agent-ops.c 2012-05-16 17:39:27 +0000
+++ daemon/ssh-agent/gkd-ssh-agent-ops.c 2015-02-27 19:55:06 +0000
@@ -139,6 +139,7 @@
139 en = gck_modules_enumerate_objects (modules, search, GCK_SESSION_AUTHENTICATE | GCK_SESSION_READ_WRITE);139 en = gck_modules_enumerate_objects (modules, search, GCK_SESSION_AUTHENTICATE | GCK_SESSION_READ_WRITE);
140140
141 for (;;) {141 for (;;) {
142 gboolean done;
142 object = gck_enumerator_next (en, NULL, &error);143 object = gck_enumerator_next (en, NULL, &error);
143 if (!object) {144 if (!object) {
144 if (error) {145 if (error) {
@@ -148,7 +149,9 @@
148 break;149 break;
149 }150 }
150151
151 if (!(func) (object, user_data))152 done = !(func) (object, user_data);
153 g_object_unref (object);
154 if (done)
152 break;155 break;
153 }156 }
154157
@@ -435,6 +438,7 @@
435 g_free (label);438 g_free (label);
436 return;439 return;
437 }440 }
441 g_free (label);
438 }442 }
439443
440 /* Lock token objects, remove session objects */444 /* Lock token objects, remove session objects */
@@ -773,9 +777,10 @@
773 g_return_val_if_fail (en, FALSE);777 g_return_val_if_fail (en, FALSE);
774778
775 all_attrs = NULL;779 all_attrs = NULL;
776 do {780 while ((obj = gck_enumerator_next (en, NULL, &error))) {
777 obj = gck_enumerator_next (en, NULL, &error);781 load_identity_v2_attributes (obj, &all_attrs);
778 } while (obj && load_identity_v2_attributes (obj, &all_attrs));782 g_object_unref (obj);
783 }
779784
780 g_object_unref (en);785 g_object_unref (en);
781786
@@ -839,10 +844,10 @@
839 GCK_SESSION_AUTHENTICATE | GCK_SESSION_READ_WRITE);844 GCK_SESSION_AUTHENTICATE | GCK_SESSION_READ_WRITE);
840845
841 all_attrs = NULL;846 all_attrs = NULL;
842 do {847 while ((obj = gck_enumerator_next (en, NULL, &error))) {
843 obj = gck_enumerator_next (en, NULL, &error);848 load_identity_v1_attributes (obj, &all_attrs);
844 } while (obj && load_identity_v1_attributes (obj, &all_attrs));849 g_object_unref (obj);
845850 }
846 g_object_unref (en);851 g_object_unref (en);
847852
848 if (error) {853 if (error) {
849854
=== modified file 'daemon/test-startup.c'
--- daemon/test-startup.c 2014-04-06 23:26:34 +0000
+++ daemon/test-startup.c 2015-02-27 19:55:06 +0000
@@ -232,13 +232,13 @@
232 output = gkd_test_launch_daemon (test->directory, argv, &pid,232 output = gkd_test_launch_daemon (test->directory, argv, &pid,
233 "XDG_RUNTIME_DIR", "/tmp/keyring-test-two",233 "XDG_RUNTIME_DIR", "/tmp/keyring-test-two",
234 NULL);234 NULL);
235 g_free (output);235 g_strfreev (output);
236236
237 /* Replace with the second daemon */237 /* Replace with the second daemon */
238 output = gkd_test_launch_daemon (test->directory, replace, &test->pid,238 output = gkd_test_launch_daemon (test->directory, replace, &test->pid,
239 "XDG_RUNTIME_DIR", "/tmp/keyring-test-two",239 "XDG_RUNTIME_DIR", "/tmp/keyring-test-two",
240 NULL);240 NULL);
241 g_free (output);241 g_strfreev (output);
242242
243 /* The first daemon should have exited cleanly here */243 /* The first daemon should have exited cleanly here */
244 g_assert_cmpint (waitpid (pid, &status, 0), ==, pid);244 g_assert_cmpint (waitpid (pid, &status, 0), ==, pid);
245245
=== modified file 'debian/changelog'
--- debian/changelog 2014-12-29 10:12:42 +0000
+++ debian/changelog 2015-02-27 19:55:06 +0000
@@ -1,3 +1,9 @@
1gnome-keyring (3.15.90-0ubuntu1) vivid; urgency=medium
2
3 * New upstream bugfix release.
4
5 -- Jackson Doak <noskcaj@ubuntu.com> Sat, 28 Feb 2015 06:42:02 +1100
6
1gnome-keyring (3.14.0-1ubuntu2) vivid; urgency=medium7gnome-keyring (3.14.0-1ubuntu2) vivid; urgency=medium
28
3 * Fix the gpg/ssh agent check syntax. Thanks to Sergey Romanov (LP:9 * Fix the gpg/ssh agent check syntax. Thanks to Sergey Romanov (LP:
410
=== modified file 'egg/egg-asn1x.c'
--- egg/egg-asn1x.c 2014-12-06 18:47:09 +0000
+++ egg/egg-asn1x.c 2015-02-27 19:55:06 +0000
@@ -2765,7 +2765,7 @@
27652765
2766 /* Encode zero characters */2766 /* Encode zero characters */
2767 anode_clr_value (node);2767 anode_clr_value (node);
2768 anode_set_value (node, g_bytes_new_static ("", 0));2768 anode_take_value (node, g_bytes_new_static ("", 0));
2769}2769}
27702770
2771GQuark2771GQuark
@@ -2828,7 +2828,7 @@
2828 anode_write_integer_ulong (val, data, &n_data);2828 anode_write_integer_ulong (val, data, &n_data);
28292829
2830 anode_clr_value (node);2830 anode_clr_value (node);
2831 anode_set_value (node, g_bytes_new_take (data, n_data));2831 anode_take_value (node, g_bytes_new_take (data, n_data));
2832}2832}
28332833
2834gboolean2834gboolean
@@ -2979,7 +2979,7 @@
2979 }2979 }
29802980
2981 anode_clr_value (node);2981 anode_clr_value (node);
2982 anode_set_value (node, value);2982 anode_take_value (node, value);
29832983
2984 an = node->data;2984 an = node->data;
2985 an->guarantee_unsigned = 0;2985 an->guarantee_unsigned = 0;
@@ -3003,7 +3003,7 @@
3003 g_return_if_fail (value != NULL);3003 g_return_if_fail (value != NULL);
3004 g_return_if_fail (anode_def_type (node) == EGG_ASN1X_INTEGER);3004 g_return_if_fail (anode_def_type (node) == EGG_ASN1X_INTEGER);
30053005
3006 anode_set_value (node, value);3006 anode_take_value (node, value);
3007 an = node->data;3007 an = node->data;
3008 an->guarantee_unsigned = 1;3008 an->guarantee_unsigned = 1;
3009}3009}
@@ -3151,6 +3151,7 @@
31513151
3152 /* A failure, set the message manually so it doesn't get a prefix */3152 /* A failure, set the message manually so it doesn't get a prefix */
3153 } else {3153 } else {
3154 atlv_free (tlv);
3154 an = node->data;3155 an = node->data;
3155 g_free (an->failure);3156 g_free (an->failure);
3156 an->failure = g_strdup (msg);3157 an->failure = g_strdup (msg);
@@ -3282,8 +3283,8 @@
3282 type == EGG_ASN1X_UTF8_STRING ||3283 type == EGG_ASN1X_UTF8_STRING ||
3283 type == EGG_ASN1X_VISIBLE_STRING);3284 type == EGG_ASN1X_VISIBLE_STRING);
32843285
3285 anode_set_value (node, g_bytes_new_with_free_func (data, n_data,3286 anode_take_value (node, g_bytes_new_with_free_func (data, n_data,
3286 destroy, data));3287 destroy, data));
3287}3288}
32883289
3289void3290void
@@ -3307,7 +3308,7 @@
3307 type == EGG_ASN1X_UTF8_STRING ||3308 type == EGG_ASN1X_UTF8_STRING ||
3308 type == EGG_ASN1X_VISIBLE_STRING);3309 type == EGG_ASN1X_VISIBLE_STRING);
33093310
3310 anode_set_value (node, g_bytes_ref (bytes));3311 anode_set_value (node, bytes);
3311}3312}
33123313
3313GBytes *3314GBytes *
33143315
=== modified file 'egg/egg-cleanup.c'
--- egg/egg-cleanup.c 2014-04-06 23:26:34 +0000
+++ egg/egg-cleanup.c 2015-02-27 19:55:06 +0000
@@ -52,6 +52,7 @@
52 cleanup = (EggCleanup*)l->data;52 cleanup = (EggCleanup*)l->data;
53 if (cleanup->notify == notify && cleanup->user_data == user_data) {53 if (cleanup->notify == notify && cleanup->user_data == user_data) {
54 registered_cleanups = g_slist_remove (registered_cleanups, cleanup);54 registered_cleanups = g_slist_remove (registered_cleanups, cleanup);
55 g_free (cleanup);
55 break;56 break;
56 }57 }
57 }58 }
5859
=== modified file 'egg/egg-hkdf.c'
--- egg/egg-hkdf.c 2014-04-06 23:26:34 +0000
+++ egg/egg-hkdf.c 2015-02-27 19:55:06 +0000
@@ -102,6 +102,7 @@
102 break;102 break;
103 }103 }
104104
105 gcry_md_close (md2);
105 g_free (alloc);106 g_free (alloc);
106 gcry_free (buffer);107 gcry_free (buffer);
107 return TRUE;108 return TRUE;
108109
=== modified file 'egg/test-asn1.c'
--- egg/test-asn1.c 2014-04-06 23:26:34 +0000
+++ egg/test-asn1.c 2015-02-27 19:55:06 +0000
@@ -2385,6 +2385,7 @@
2385 asn = egg_asn1x_create_quark (test_asn1_tab, g_quark_from_static_string ("1.5.13"));2385 asn = egg_asn1x_create_quark (test_asn1_tab, g_quark_from_static_string ("1.5.13"));
2386 g_assert (asn != NULL);2386 g_assert (asn != NULL);
2387 g_assert_cmpstr (egg_asn1x_name (asn), ==, "TestIntegers");2387 g_assert_cmpstr (egg_asn1x_name (asn), ==, "TestIntegers");
2388 egg_asn1x_destroy (asn);
2388}2389}
23892390
2390static void2391static void
23912392
=== modified file 'egg/test-dn.c'
--- egg/test-dn.c 2014-04-06 23:26:34 +0000
+++ egg/test-dn.c 2015-02-27 19:55:06 +0000
@@ -98,6 +98,7 @@
98 text = egg_dn_print_value (oid, asn);98 text = egg_dn_print_value (oid, asn);
99 g_assert_cmpstr (text, ==, "Thawte Personal Premium CA");99 g_assert_cmpstr (text, ==, "Thawte Personal Premium CA");
100 g_free (text);100 g_free (text);
101 g_bytes_unref (bytes);
101102
102 /* Unknown oid */103 /* Unknown oid */
103 oid = g_quark_from_static_string ("1.1.1.1.1.1");104 oid = g_quark_from_static_string ("1.1.1.1.1.1");
104105
=== modified file 'egg/test-padding.c'
--- egg/test-padding.c 2014-04-06 23:26:34 +0000
+++ egg/test-padding.c 2015-02-27 19:55:06 +0000
@@ -114,6 +114,7 @@
114 g_assert (result[5] == 0x00);114 g_assert (result[5] == 0x00);
115 g_assert (result[6] == 'T');115 g_assert (result[6] == 'T');
116 g_assert (result[7] == 'E');116 g_assert (result[7] == 'E');
117 g_free (vesult);
117}118}
118119
119static void120static void
120121
=== modified file 'egg/test-spawn.c'
--- egg/test-spawn.c 2014-04-06 23:26:34 +0000
+++ egg/test-spawn.c 2015-02-27 19:55:06 +0000
@@ -188,6 +188,8 @@
188 g_assert (data.completed);188 g_assert (data.completed);
189 g_assert_cmpstr (data.output, ==, "80 81 82 83 84\n");189 g_assert_cmpstr (data.output, ==, "80 81 82 83 84\n");
190 g_assert_cmpstr (data.error, ==, "1\n2\n3\n4\n5\n");190 g_assert_cmpstr (data.error, ==, "1\n2\n3\n4\n5\n");
191 g_free (data.error);
192 g_free (data.output);
191}193}
192194
193static void195static void
@@ -233,6 +235,8 @@
233 g_assert (data.completed);235 g_assert (data.completed);
234 g_assert_cmpstr (data.output, ==, "80 81 82 83 84\n");236 g_assert_cmpstr (data.output, ==, "80 81 82 83 84\n");
235 g_assert_cmpstr (data.error, ==, "1\n2\n3\n4\n5\n");237 g_assert_cmpstr (data.error, ==, "1\n2\n3\n4\n5\n");
238 g_free (data.error);
239 g_free (data.output);
236}240}
237241
238static void242static void
@@ -259,6 +263,8 @@
259 g_assert (data.finalized);263 g_assert (data.finalized);
260 g_assert (data.completed);264 g_assert (data.completed);
261 g_assert (!data.output);265 g_assert (!data.output);
266 g_free (data.error);
267 g_free (data.output);
262}268}
263269
264static void270static void
265271
=== modified file 'pam/test-pam.c'
--- pam/test-pam.c 2014-04-06 23:26:34 +0000
+++ pam/test-pam.c 2015-02-27 19:55:06 +0000
@@ -149,6 +149,7 @@
149 return;149 return;
150 }150 }
151 } else if (g_error_matches (error, G_FILE_ERROR, G_FILE_ERROR_NOENT)) {151 } else if (g_error_matches (error, G_FILE_ERROR, G_FILE_ERROR_NOENT)) {
152 g_error_free (error);
152 skip_test (test, "missing test pam config");153 skip_test (test, "missing test pam config");
153 return;154 return;
154 }155 }
155156
=== modified file 'pkcs11/gkm/gkm-attributes.c'
--- pkcs11/gkm/gkm-attributes.c 2014-04-06 23:26:34 +0000
+++ pkcs11/gkm/gkm-attributes.c 2015-02-27 19:55:06 +0000
@@ -359,6 +359,7 @@
359 g_checksum_update (checksum, data, n_data);359 g_checksum_update (checksum, data, n_data);
360 result = attr->ulValueLen;360 result = attr->ulValueLen;
361 g_checksum_get_digest (checksum, attr->pValue, &result);361 g_checksum_get_digest (checksum, attr->pValue, &result);
362 g_checksum_free (checksum);
362 attr->ulValueLen = result;363 attr->ulValueLen = result;
363 return CKR_OK;364 return CKR_OK;
364}365}
365366
=== modified file 'pkcs11/gkm/gkm-credential.c'
--- pkcs11/gkm/gkm-credential.c 2014-12-06 18:47:09 +0000
+++ pkcs11/gkm/gkm-credential.c 2015-02-27 19:55:06 +0000
@@ -209,6 +209,10 @@
209 g_object_weak_unref (G_OBJECT (self->pv->object), object_went_away, self);209 g_object_weak_unref (G_OBJECT (self->pv->object), object_went_away, self);
210 self->pv->object = NULL;210 self->pv->object = NULL;
211211
212 if (self->pv->secret)
213 g_object_unref (G_OBJECT (self->pv->secret));
214 self->pv->secret = NULL;
215
212 clear_data (self);216 clear_data (self);
213217
214 G_OBJECT_CLASS (gkm_credential_parent_class)->dispose (obj);218 G_OBJECT_CLASS (gkm_credential_parent_class)->dispose (obj);
215219
=== modified file 'pkcs11/gkm/gkm-data-asn1.c'
--- pkcs11/gkm/gkm-data-asn1.c 2014-04-06 23:26:34 +0000
+++ pkcs11/gkm/gkm-data-asn1.c 2015-02-27 19:55:06 +0000
@@ -43,6 +43,7 @@
43 /* Automatically stores in secure memory if DER data is secure */43 /* Automatically stores in secure memory if DER data is secure */
44 sz = g_bytes_get_size (buf);44 sz = g_bytes_get_size (buf);
45 gcry = gcry_mpi_scan (mpi, GCRYMPI_FMT_STD, g_bytes_get_data (buf, NULL), sz, &sz);45 gcry = gcry_mpi_scan (mpi, GCRYMPI_FMT_STD, g_bytes_get_data (buf, NULL), sz, &sz);
46 g_bytes_unref (buf);
46 if (gcry != 0)47 if (gcry != 0)
47 return FALSE;48 return FALSE;
4849
4950
=== modified file 'pkcs11/gkm/gkm-mock.c'
--- pkcs11/gkm/gkm-mock.c 2014-04-06 23:26:34 +0000
+++ pkcs11/gkm/gkm-mock.c 2015-02-27 19:55:06 +0000
@@ -72,6 +72,7 @@
72static guint unique_identifier = 100;72static guint unique_identifier = 100;
73static GHashTable *the_sessions = NULL;73static GHashTable *the_sessions = NULL;
74static GHashTable *the_objects = NULL;74static GHashTable *the_objects = NULL;
75static GArray *the_credential_template = NULL;
7576
76enum {77enum {
77 PRIVATE_KEY_CAPITALIZE = 3,78 PRIVATE_KEY_CAPITALIZE = 3,
@@ -260,6 +261,7 @@
260 n_the_pin = strlen (the_pin);261 n_the_pin = strlen (the_pin);
261 the_sessions = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, free_session);262 the_sessions = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, free_session);
262 the_objects = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, (GDestroyNotify)gkm_template_free);263 the_objects = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, (GDestroyNotify)gkm_template_free);
264 the_credential_template = gkm_template_new (NULL, 0);
263265
264 /* Our token object */266 /* Our token object */
265 attrs = gkm_template_new (NULL, 0);267 attrs = gkm_template_new (NULL, 0);
@@ -337,6 +339,9 @@
337 g_hash_table_destroy (the_sessions);339 g_hash_table_destroy (the_sessions);
338 the_sessions = NULL;340 the_sessions = NULL;
339341
342 gkm_template_free (the_credential_template);
343 the_credential_template = NULL;
344
340 g_free (the_pin);345 g_free (the_pin);
341 return CKR_OK;346 return CKR_OK;
342}347}
@@ -679,9 +684,12 @@
679 g_return_val_if_fail (session, CKR_SESSION_HANDLE_INVALID);684 g_return_val_if_fail (session, CKR_SESSION_HANDLE_INVALID);
680685
681 old = g_strndup ((gchar*)pOldPin, ulOldLen);686 old = g_strndup ((gchar*)pOldPin, ulOldLen);
682 if (!old || !g_str_equal (old, the_pin))687 if (!old || !g_str_equal (old, the_pin)) {
688 g_free (old);
683 return CKR_PIN_INCORRECT;689 return CKR_PIN_INCORRECT;
690 }
684691
692 g_free (old);
685 g_free (the_pin);693 g_free (the_pin);
686 the_pin = g_strndup ((gchar*)pNewPin, ulNewLen);694 the_pin = g_strndup ((gchar*)pNewPin, ulNewLen);
687 n_the_pin = ulNewLen;695 n_the_pin = ulNewLen;
@@ -864,6 +872,10 @@
864872
865 for (i = 0; i < ulCount; ++i) {873 for (i = 0; i < ulCount; ++i) {
866 result = pTemplate + i;874 result = pTemplate + i;
875 if (result->type == CKA_G_CREDENTIAL_TEMPLATE) {
876 gkm_attribute_set_template (result, the_credential_template);
877 continue;
878 }
867 attr = gkm_template_find (attrs, result->type);879 attr = gkm_template_find (attrs, result->type);
868 if (!attr) {880 if (!attr) {
869 result->ulValueLen = (CK_ULONG)-1;881 result->ulValueLen = (CK_ULONG)-1;
@@ -907,8 +919,22 @@
907 return CKR_OBJECT_HANDLE_INVALID;919 return CKR_OBJECT_HANDLE_INVALID;
908 }920 }
909921
910 for (i = 0; i < ulCount; ++i)922 for (i = 0; i < ulCount; ++i) {
911 gkm_template_set (attrs, pTemplate + i);923 CK_ATTRIBUTE_PTR attr = pTemplate + i;
924
925 if (attr->type == CKA_G_CREDENTIAL_TEMPLATE) {
926 CK_RV rv;
927 GArray *template;
928
929 rv = gkm_attribute_get_template (attr, &template);
930 if (rv != CKR_OK)
931 return CKR_OBJECT_HANDLE_INVALID;
932 gkm_template_free(the_credential_template);
933 the_credential_template = template;
934 } else {
935 gkm_template_set (attrs, attr);
936 }
937 }
912938
913 return CKR_OK;939 return CKR_OK;
914}940}
915941
=== modified file 'pkcs11/gkm/test-data-asn1.c'
--- pkcs11/gkm/test-data-asn1.c 2014-09-23 20:20:23 +0000
+++ pkcs11/gkm/test-data-asn1.c 2015-02-27 19:55:06 +0000
@@ -99,11 +99,14 @@
99 g_assert (asn != NULL);99 g_assert (asn != NULL);
100100
101 ret = gkm_data_asn1_read_mpi (egg_asn1x_node (asn, "mpi", NULL), &mpt);101 ret = gkm_data_asn1_read_mpi (egg_asn1x_node (asn, "mpi", NULL), &mpt);
102 egg_asn1x_destroy (asn);
102 g_assert ("couldn't read mpi from asn1" && ret);103 g_assert ("couldn't read mpi from asn1" && ret);
103 g_assert ("mpi returned is null" && mpt != NULL);104 g_assert ("mpi returned is null" && mpt != NULL);
104 g_assert ("mpi is wrong number" && gcry_mpi_cmp (mpi, mpt) == 0);105 g_assert ("mpi is wrong number" && gcry_mpi_cmp (mpi, mpt) == 0);
105106
106 g_bytes_unref (data);107 g_bytes_unref (data);
108 gcry_mpi_release (mpi);
109 gcry_mpi_release (mpt);
107}110}
108111
109int112int
110113
=== modified file 'pkcs11/gkm/test-data-der.c'
--- pkcs11/gkm/test-data-der.c 2014-04-06 23:26:34 +0000
+++ pkcs11/gkm/test-data-der.c 2015-02-27 19:55:06 +0000
@@ -111,6 +111,7 @@
111 /* Now compare them */111 /* Now compare them */
112 g_assert ("key parsed differently" && compare_keys (key, sexp));112 g_assert ("key parsed differently" && compare_keys (key, sexp));
113113
114 gcry_sexp_release (sexp);
114 g_bytes_unref (data);115 g_bytes_unref (data);
115}116}
116117
@@ -154,6 +155,8 @@
154 g_return_if_fail (gcry == 0);155 g_return_if_fail (gcry == 0);
155156
156 test_der_public (key);157 test_der_public (key);
158
159 gcry_sexp_release (key);
157}160}
158161
159static void162static void
@@ -166,6 +169,8 @@
166 g_return_if_fail (gcry == 0);169 g_return_if_fail (gcry == 0);
167170
168 test_der_public (key);171 test_der_public (key);
172
173 gcry_sexp_release (key);
169}174}
170175
171static void176static void
@@ -188,6 +193,7 @@
188 /* Now compare them */193 /* Now compare them */
189 g_assert ("key parsed differently" && compare_keys (key, sexp));194 g_assert ("key parsed differently" && compare_keys (key, sexp));
190195
196 gcry_sexp_release (sexp);
191 g_bytes_unref (data);197 g_bytes_unref (data);
192}198}
193199
@@ -201,6 +207,8 @@
201 g_return_if_fail (gcry == 0);207 g_return_if_fail (gcry == 0);
202208
203 test_der_private (key);209 test_der_private (key);
210
211 gcry_sexp_release (key);
204}212}
205213
206static void214static void
@@ -213,6 +221,8 @@
213 g_return_if_fail (gcry == 0);221 g_return_if_fail (gcry == 0);
214222
215 test_der_private (key);223 test_der_private (key);
224
225 gcry_sexp_release (key);
216}226}
217227
218static void228static void
@@ -240,6 +250,7 @@
240 /* Now compare them */250 /* Now compare them */
241 g_assert ("key parsed differently" && compare_keys (skey, pkey));251 g_assert ("key parsed differently" && compare_keys (skey, pkey));
242252
253 gcry_sexp_release (skey);
243 g_bytes_unref (params);254 g_bytes_unref (params);
244 g_bytes_unref (key);255 g_bytes_unref (key);
245}256}
@@ -332,6 +343,8 @@
332343
333 if (res == GKM_DATA_SUCCESS)344 if (res == GKM_DATA_SUCCESS)
334 gcry_sexp_release (sexp);345 gcry_sexp_release (sexp);
346
347 egg_asn1x_destroy (asn1);
335 g_bytes_unref (keydata);348 g_bytes_unref (keydata);
336}349}
337350
338351
=== modified file 'pkcs11/gkm/test-secret.c'
--- pkcs11/gkm/test-secret.c 2014-04-06 23:26:34 +0000
+++ pkcs11/gkm/test-secret.c 2015-02-27 19:55:06 +0000
@@ -185,6 +185,9 @@
185 g_object_unref (one);185 g_object_unref (one);
186 one = gkm_secret_new_from_password ("other");186 one = gkm_secret_new_from_password ("other");
187 g_assert (!gkm_secret_equal (one, two));187 g_assert (!gkm_secret_equal (one, two));
188
189 g_object_unref (one);
190 g_object_unref (two);
188}191}
189192
190int193int
191194
=== modified file 'pkcs11/gkm/test-sexp.c'
--- pkcs11/gkm/test-sexp.c 2014-04-06 23:26:34 +0000
+++ pkcs11/gkm/test-sexp.c 2015-02-27 19:55:06 +0000
@@ -95,10 +95,12 @@
95 g_assert (algorithm == GCRY_PK_RSA);95 g_assert (algorithm == GCRY_PK_RSA);
96 g_assert (is_priv == TRUE);96 g_assert (is_priv == TRUE);
97 g_assert (sexp != NULL);97 g_assert (sexp != NULL);
98 gcry_sexp_release (sexp);
9899
99 ret = gkm_sexp_extract_mpi (test->rsakey, &mpi, "p", NULL);100 ret = gkm_sexp_extract_mpi (test->rsakey, &mpi, "p", NULL);
100 g_assert (ret);101 g_assert (ret);
101 g_assert (mpi != NULL);102 g_assert (mpi != NULL);
103 gcry_mpi_release (mpi);
102}104}
103105
104static void106static void
105107
=== modified file 'pkcs11/gnome2-store/gkm-gnome2-file.c'
--- pkcs11/gnome2-store/gkm-gnome2-file.c 2014-12-06 18:47:09 +0000
+++ pkcs11/gnome2-store/gkm-gnome2-file.c 2015-02-27 19:55:06 +0000
@@ -127,7 +127,7 @@
127static GHashTable*127static GHashTable*
128entries_new (void)128entries_new (void)
129{129{
130 return g_hash_table_new_full (g_str_hash, g_str_equal, NULL, (GDestroyNotify)g_hash_table_unref);130 return g_hash_table_new_full (g_str_hash, g_str_equal, (GDestroyNotify)g_free, (GDestroyNotify)g_hash_table_unref);
131}131}
132132
133static gboolean133static gboolean
@@ -309,6 +309,7 @@
309 gsize n_hash, hash_offset;309 gsize n_hash, hash_offset;
310 guint32 length;310 guint32 length;
311 int algo;311 int algo;
312 gboolean valid;
312313
313 g_assert (buffer);314 g_assert (buffer);
314 g_assert (offset);315 g_assert (offset);
@@ -337,10 +338,10 @@
337338
338 check = g_malloc0 (n_hash);339 check = g_malloc0 (n_hash);
339 gcry_md_hash_buffer (algo, check, buffer->buf, length);340 gcry_md_hash_buffer (algo, check, buffer->buf, length);
340 if (memcmp (check, hash, n_hash) != 0)341 valid = (memcmp (check, hash, n_hash) == 0);
341 return FALSE;342 g_free (check);
342343
343 return TRUE;344 return valid;
344}345}
345346
346static gboolean347static gboolean
@@ -362,31 +363,24 @@
362 n_block = gcry_cipher_get_algo_blklen (calgo);363 n_block = gcry_cipher_get_algo_blklen (calgo);
363 g_return_val_if_fail (n_block, FALSE);364 g_return_val_if_fail (n_block, FALSE);
364365
365 /* Allocate memory for the keys */
366 key = gcry_malloc_secure (n_key);
367 g_return_val_if_fail (key, FALSE);
368 iv = g_malloc0 (n_block);
369
370 password = gkm_secret_get_password (login, &n_password);366 password = gkm_secret_get_password (login, &n_password);
371367
372 if (!egg_symkey_generate_simple (calgo, halgo, password, n_password,368 if (!egg_symkey_generate_simple (calgo, halgo, password, n_password,
373 salt, n_salt, iterations, &key, &iv)) {369 salt, n_salt, iterations, &key, &iv)) {
374 gcry_free (key);
375 g_free (iv);
376 return FALSE;370 return FALSE;
377 }371 }
378372
379 gcry = gcry_cipher_open (cipher, calgo, GCRY_CIPHER_MODE_CBC, 0);373 gcry = gcry_cipher_open (cipher, calgo, GCRY_CIPHER_MODE_CBC, 0);
380 if (gcry) {374 if (gcry) {
381 g_warning ("couldn't create cipher context: %s", gcry_strerror (gcry));375 g_warning ("couldn't create cipher context: %s", gcry_strerror (gcry));
382 gcry_free (key);376 egg_secure_free (key);
383 g_free (iv);377 g_free (iv);
384 return FALSE;378 return FALSE;
385 }379 }
386380
387 gcry = gcry_cipher_setkey (*cipher, key, n_key);381 gcry = gcry_cipher_setkey (*cipher, key, n_key);
388 g_return_val_if_fail (!gcry, FALSE);382 g_return_val_if_fail (!gcry, FALSE);
389 gcry_free (key);383 egg_secure_free (key);
390384
391 gcry = gcry_cipher_setiv (*cipher, iv, n_block);385 gcry = gcry_cipher_setiv (*cipher, iv, n_block);
392 g_return_val_if_fail (!gcry, FALSE);386 g_return_val_if_fail (!gcry, FALSE);
393387
=== modified file 'pkcs11/gnome2-store/gkm-gnome2-storage.c'
--- pkcs11/gnome2-store/gkm-gnome2-storage.c 2014-12-06 18:47:09 +0000
+++ pkcs11/gnome2-store/gkm-gnome2-storage.c 2015-02-27 19:55:06 +0000
@@ -916,6 +916,10 @@
916 g_object_unref (self->manager);916 g_object_unref (self->manager);
917 self->manager = NULL;917 self->manager = NULL;
918918
919 if (self->login)
920 g_object_unref (self->login);
921 self->login = NULL;
922
919 g_signal_handlers_disconnect_by_func (self->file, data_file_entry_added, self);923 g_signal_handlers_disconnect_by_func (self->file, data_file_entry_added, self);
920 g_signal_handlers_disconnect_by_func (self->file, data_file_entry_changed, self);924 g_signal_handlers_disconnect_by_func (self->file, data_file_entry_changed, self);
921 g_signal_handlers_disconnect_by_func (self->file, data_file_entry_removed, self);925 g_signal_handlers_disconnect_by_func (self->file, data_file_entry_removed, self);
922926
=== modified file 'pkcs11/gnome2-store/test-import.c'
--- pkcs11/gnome2-store/test-import.c 2014-04-06 23:26:34 +0000
+++ pkcs11/gnome2-store/test-import.c 2015-02-27 19:55:06 +0000
@@ -62,6 +62,7 @@
6262
63 test->funcs = gkm_gnome2_store_get_functions ();63 test->funcs = gkm_gnome2_store_get_functions ();
64 rv = (test->funcs->C_Initialize) (&args);64 rv = (test->funcs->C_Initialize) (&args);
65 g_free (args.pReserved);
65 gkm_assert_cmprv (rv, ==, CKR_OK);66 gkm_assert_cmprv (rv, ==, CKR_OK);
6667
67 /* And now need to log in */68 /* And now need to log in */
6869
=== modified file 'pkcs11/secret-store/gkm-secret-item.c'
--- pkcs11/secret-store/gkm-secret-item.c 2014-04-06 23:26:34 +0000
+++ pkcs11/secret-store/gkm-secret-item.c 2015-02-27 19:55:06 +0000
@@ -391,6 +391,9 @@
391 g_hash_table_unref (self->fields);391 g_hash_table_unref (self->fields);
392 self->fields = NULL;392 self->fields = NULL;
393393
394 g_free (self->schema);
395 self->schema = NULL;
396
394 G_OBJECT_CLASS (gkm_secret_item_parent_class)->finalize (obj);397 G_OBJECT_CLASS (gkm_secret_item_parent_class)->finalize (obj);
395}398}
396399
397400
=== modified file 'pkcs11/secret-store/gkm-secret-search.c'
--- pkcs11/secret-store/gkm-secret-search.c 2014-12-06 18:47:09 +0000
+++ pkcs11/secret-store/gkm-secret-search.c 2015-02-27 19:55:06 +0000
@@ -247,6 +247,7 @@
247 "schema-name", schema_name,247 "schema-name", schema_name,
248 "collection-id", identifier,248 "collection-id", identifier,
249 NULL);249 NULL);
250 g_free (identifier);
250251
251 /* Load any new items or collections */252 /* Load any new items or collections */
252 gkm_module_refresh_token (module);253 gkm_module_refresh_token (module);
253254
=== modified file 'pkcs11/secret-store/gkm-secret-textual.c'
--- pkcs11/secret-store/gkm-secret-textual.c 2014-12-06 18:47:09 +0000
+++ pkcs11/secret-store/gkm-secret-textual.c 2015-02-27 19:55:06 +0000
@@ -118,6 +118,7 @@
118 g_free (groupname);118 g_free (groupname);
119 ++index;119 ++index;
120 }120 }
121 g_list_free (names);
121}122}
122123
123static void124static void
124125
=== modified file 'pkcs11/secret-store/test-secret-binary.c'
--- pkcs11/secret-store/test-secret-binary.c 2014-04-06 23:26:34 +0000
+++ pkcs11/secret-store/test-secret-binary.c 2015-02-27 19:55:06 +0000
@@ -156,6 +156,7 @@
156 /* Try parsing it again */156 /* Try parsing it again */
157 res = gkm_secret_binary_read (test->collection, test->sdata, data, n_data);157 res = gkm_secret_binary_read (test->collection, test->sdata, data, n_data);
158 g_assert (res == GKM_DATA_SUCCESS);158 g_assert (res == GKM_DATA_SUCCESS);
159 g_free (data);
159}160}
160161
161static void162static void
162163
=== modified file 'pkcs11/secret-store/test-secret-textual.c'
--- pkcs11/secret-store/test-secret-textual.c 2014-04-06 23:26:34 +0000
+++ pkcs11/secret-store/test-secret-textual.c 2015-02-27 19:55:06 +0000
@@ -148,6 +148,7 @@
148 /* Try parsing it again */148 /* Try parsing it again */
149 res = gkm_secret_textual_read (test->collection, test->sdata, data, n_data);149 res = gkm_secret_textual_read (test->collection, test->sdata, data, n_data);
150 g_assert (res == GKM_DATA_SUCCESS);150 g_assert (res == GKM_DATA_SUCCESS);
151 g_free (data);
151}152}
152153
153static void154static void
154155
=== modified file 'pkcs11/wrap-layer/gkm-wrap-prompt.c'
--- pkcs11/wrap-layer/gkm-wrap-prompt.c 2014-04-06 23:26:34 +0000
+++ pkcs11/wrap-layer/gkm-wrap-prompt.c 2015-02-27 19:55:06 +0000
@@ -904,14 +904,30 @@
904}904}
905905
906static void906static void
907gkm_wrap_prompt_finalize (GObject *obj)907gkm_wrap_prompt_clear_prompt_data (GkmWrapPrompt *self)
908{908{
909 GkmWrapPrompt *self = GKM_WRAP_PROMPT (obj);
910
911 if (self->destroy_data && self->prompt_data)909 if (self->destroy_data && self->prompt_data)
912 (self->destroy_data) (self->prompt_data);910 (self->destroy_data) (self->prompt_data);
913 self->destroy_data = NULL;911 self->destroy_data = NULL;
914 self->prompt_data = NULL;912 self->prompt_data = NULL;
913}
914
915static void
916gkm_wrap_prompt_set_prompt_data (GkmWrapPrompt *self,
917 gpointer prompt_data,
918 GDestroyNotify destroy_data)
919{
920 gkm_wrap_prompt_clear_prompt_data (self);
921 self->destroy_data = destroy_data;
922 self->prompt_data = prompt_data;
923}
924
925static void
926gkm_wrap_prompt_finalize (GObject *obj)
927{
928 GkmWrapPrompt *self = GKM_WRAP_PROMPT (obj);
929
930 gkm_wrap_prompt_clear_prompt_data (self);
915931
916 while (!g_queue_is_empty(&self->pool))932 while (!g_queue_is_empty(&self->pool))
917 g_free (g_queue_pop_head (&self->pool));933 g_free (g_queue_pop_head (&self->pool));
@@ -934,7 +950,7 @@
934typedef struct _CredentialPrompt {950typedef struct _CredentialPrompt {
935 GArray *template;951 GArray *template;
936 CK_ULONG n_template;952 CK_ULONG n_template;
937 const gchar *password;953 gchar *password;
938} CredentialPrompt;954} CredentialPrompt;
939955
940static void956static void
@@ -942,6 +958,7 @@
942{958{
943 CredentialPrompt *data = user_data;959 CredentialPrompt *data = user_data;
944 g_array_free (data->template, TRUE);960 g_array_free (data->template, TRUE);
961 egg_secure_strfree (data->password);
945 g_slice_free (CredentialPrompt, data);962 g_slice_free (CredentialPrompt, data);
946}963}
947964
@@ -977,8 +994,8 @@
977 NULL);994 NULL);
978995
979 /* Build up the prompt */996 /* Build up the prompt */
980 self->prompt_data = data = g_slice_new0 (CredentialPrompt);997 data = g_slice_new0 (CredentialPrompt);
981 self->destroy_data = credential_prompt_free;998 gkm_wrap_prompt_set_prompt_data (self, data, credential_prompt_free);
982 self->module = module;999 self->module = module;
983 self->session = session;1000 self->session = session;
984 self->object = object;1001 self->object = object;
@@ -1017,6 +1034,7 @@
1017 attrs = get_attributes_from_object (self, &n_attrs);1034 attrs = get_attributes_from_object (self, &n_attrs);
1018 g_return_val_if_fail (attrs, FALSE);1035 g_return_val_if_fail (attrs, FALSE);
10191036
1037 egg_secure_strfree (data->password);
1020 data->password = NULL;1038 data->password = NULL;
10211039
1022 if (self->iteration == 0) {1040 if (self->iteration == 0) {
@@ -1028,6 +1046,7 @@
1028 }1046 }
10291047
1030 if (!data->password) {1048 if (!data->password) {
1049 const char *password;
1031 setup_unlock_prompt (self, attrs, n_attrs, self->iteration == 1);1050 setup_unlock_prompt (self, attrs, n_attrs, self->iteration == 1);
10321051
1033 /* Now load up the unlock options into the prompt*/1052 /* Now load up the unlock options into the prompt*/
@@ -1039,14 +1058,15 @@
10391058
1040 ++(self->iteration);1059 ++(self->iteration);
10411060
1042 data->password = gkm_wrap_prompt_request_password (self);1061 password = gkm_wrap_prompt_request_password (self);
1043 if (data->password == NULL) {1062 if (password == NULL) {
1044 if (error != NULL) {1063 if (error != NULL) {
1045 g_warning ("couldn't prompt for password: %s", egg_error_message (error));1064 g_warning ("couldn't prompt for password: %s", egg_error_message (error));
1046 g_error_free (error);1065 g_error_free (error);
1047 }1066 }
1048 return FALSE;1067 return FALSE;
1049 }1068 }
1069 data->password = egg_secure_strdup (password);
1050 }1070 }
10511071
1052 /* Truncate any extra options off the end of template */1072 /* Truncate any extra options off the end of template */
@@ -1173,7 +1193,7 @@
1173 CK_UTF8CHAR_PTR *pin, CK_ULONG *n_pin)1193 CK_UTF8CHAR_PTR *pin, CK_ULONG *n_pin)
1174{1194{
1175 CK_TOKEN_INFO tinfo;1195 CK_TOKEN_INFO tinfo;
1176 const gchar *password;1196 gchar *password;
11771197
1178 g_assert (GKM_IS_WRAP_PROMPT (self));1198 g_assert (GKM_IS_WRAP_PROMPT (self));
1179 g_assert (self->module);1199 g_assert (self->module);
@@ -1185,11 +1205,12 @@
11851205
1186 setup_init_token (self, &tinfo);1206 setup_init_token (self, &tinfo);
11871207
1188 password = gkm_wrap_prompt_request_password (self);1208 password = (char *)gkm_wrap_prompt_request_password (self);
1189 if (password == NULL)1209 if (password == NULL)
1190 return FALSE;1210 return FALSE;
11911211
1192 self->prompt_data = (gpointer)password;1212 g_assert (self->destroy_data == NULL);
1213 gkm_wrap_prompt_set_prompt_data (self, password, NULL);
1193 *pin = (gpointer)password;1214 *pin = (gpointer)password;
1194 *n_pin = strlen (password);1215 *n_pin = strlen (password);
1195 return TRUE;1216 return TRUE;
@@ -1314,8 +1335,9 @@
1314 /* Build up the prompt */1335 /* Build up the prompt */
1315 self->module = module;1336 self->module = module;
1316 self->session = session;1337 self->session = session;
1317 self->destroy_data = set_pin_prompt_free;1338 gkm_wrap_prompt_set_prompt_data (self,
1318 self->prompt_data = g_slice_new0 (SetPinPrompt);1339 g_slice_new0 (SetPinPrompt),
1340 set_pin_prompt_free);
13191341
1320 return self;1342 return self;
1321}1343}
@@ -1438,7 +1460,7 @@
1438login_prompt_do_specific (GkmWrapPrompt *self, CK_RV last_result,1460login_prompt_do_specific (GkmWrapPrompt *self, CK_RV last_result,
1439 CK_UTF8CHAR_PTR *pin, CK_ULONG *n_pin)1461 CK_UTF8CHAR_PTR *pin, CK_ULONG *n_pin)
1440{1462{
1441 const gchar *password = NULL;1463 gchar *password = NULL;
1442 CK_ATTRIBUTE_PTR attrs;1464 CK_ATTRIBUTE_PTR attrs;
1443 CK_ULONG n_attrs;1465 CK_ULONG n_attrs;
14441466
@@ -1451,6 +1473,9 @@
1451 if (self->iteration == 0) {1473 if (self->iteration == 0) {
1452 ++(self->iteration);1474 ++(self->iteration);
1453 password = auto_unlock_lookup_object (attrs, n_attrs);1475 password = auto_unlock_lookup_object (attrs, n_attrs);
1476 if (password)
1477 gkm_wrap_prompt_set_prompt_data (self, password,
1478 (GDestroyNotify)egg_secure_strfree);
14541479
1455 } else if (self->iteration == 1 && last_result == CKR_PIN_INCORRECT) {1480 } else if (self->iteration == 1 && last_result == CKR_PIN_INCORRECT) {
1456 auto_unlock_remove_object (attrs, n_attrs);1481 auto_unlock_remove_object (attrs, n_attrs);
@@ -1459,12 +1484,12 @@
1459 if (!password) {1484 if (!password) {
1460 setup_unlock_prompt (self, attrs, n_attrs, self->iteration == 1);1485 setup_unlock_prompt (self, attrs, n_attrs, self->iteration == 1);
14611486
1462 password = gkm_wrap_prompt_request_password (self);1487 password = (char *)gkm_wrap_prompt_request_password (self);
1463 if (password == NULL)1488 if (password == NULL)
1464 return FALSE;1489 return FALSE;
1490 gkm_wrap_prompt_set_prompt_data (self, password, NULL);
1465 }1491 }
14661492
1467 self->prompt_data = (gpointer)password;
1468 *pin = (guchar *)password;1493 *pin = (guchar *)password;
1469 *n_pin = strlen (password);1494 *n_pin = strlen (password);
1470 return TRUE;1495 return TRUE;
@@ -1477,7 +1502,8 @@
1477 CK_ULONG n_attrs;1502 CK_ULONG n_attrs;
14781503
1479 g_assert (GKM_IS_WRAP_PROMPT (self));1504 g_assert (GKM_IS_WRAP_PROMPT (self));
1480 g_assert (self->destroy_data == NULL);1505 g_assert (self->destroy_data == NULL ||
1506 self->destroy_data == (GDestroyNotify)egg_secure_strfree);
14811507
1482 /* Possibly save away auto unlock */1508 /* Possibly save away auto unlock */
1483 if (call_result == CKR_OK && auto_unlock_should_attach (self)) {1509 if (call_result == CKR_OK && auto_unlock_should_attach (self)) {
@@ -1510,7 +1536,7 @@
1510 CK_UTF8CHAR_PTR *pin, CK_ULONG *n_pin)1536 CK_UTF8CHAR_PTR *pin, CK_ULONG *n_pin)
1511{1537{
1512 CK_TOKEN_INFO tinfo;1538 CK_TOKEN_INFO tinfo;
1513 const gchar *password = NULL;1539 gchar *password = NULL;
15141540
1515 g_assert (GKM_IS_WRAP_PROMPT (self));1541 g_assert (GKM_IS_WRAP_PROMPT (self));
1516 g_assert (self->module);1542 g_assert (self->module);
@@ -1523,6 +1549,9 @@
1523 if (self->iteration == 0) {1549 if (self->iteration == 0) {
1524 ++(self->iteration);1550 ++(self->iteration);
1525 password = auto_unlock_lookup_token (&tinfo);1551 password = auto_unlock_lookup_token (&tinfo);
1552 if (password)
1553 gkm_wrap_prompt_set_prompt_data (self, password,
1554 (GDestroyNotify)egg_secure_strfree);
15261555
1527 } else if (self->iteration == 1 && last_result == CKR_PIN_INCORRECT) {1556 } else if (self->iteration == 1 && last_result == CKR_PIN_INCORRECT) {
1528 auto_unlock_remove_token (&tinfo);1557 auto_unlock_remove_token (&tinfo);
@@ -1531,12 +1560,12 @@
1531 if (!password) {1560 if (!password) {
1532 setup_unlock_token (self, &tinfo);1561 setup_unlock_token (self, &tinfo);
15331562
1534 password = gkm_wrap_prompt_request_password (self);1563 password = (char *)gkm_wrap_prompt_request_password (self);
1535 if (password == NULL)1564 if (password == NULL)
1536 return FALSE;1565 return FALSE;
1566 gkm_wrap_prompt_set_prompt_data (self, password, NULL);
1537 }1567 }
15381568
1539 self->prompt_data = (gpointer)password;
1540 *pin = (guchar *)password;1569 *pin = (guchar *)password;
1541 *n_pin = strlen (password);1570 *n_pin = strlen (password);
1542 return TRUE;1571 return TRUE;
@@ -1548,7 +1577,8 @@
1548 CK_TOKEN_INFO tinfo;1577 CK_TOKEN_INFO tinfo;
15491578
1550 g_assert (GKM_IS_WRAP_PROMPT (self));1579 g_assert (GKM_IS_WRAP_PROMPT (self));
1551 g_assert (self->destroy_data == NULL);1580 g_assert (self->destroy_data == NULL ||
1581 self->destroy_data == (GDestroyNotify)egg_secure_strfree);
15521582
1553 /* Save the options, and possibly auto unlock */1583 /* Save the options, and possibly auto unlock */
1554 if (call_result == CKR_OK && auto_unlock_should_attach (self)) {1584 if (call_result == CKR_OK && auto_unlock_should_attach (self)) {
15551585
=== modified file 'pkcs11/wrap-layer/mock-secret-store.c'
--- pkcs11/wrap-layer/mock-secret-store.c 2014-04-06 23:26:34 +0000
+++ pkcs11/wrap-layer/mock-secret-store.c 2015-02-27 19:55:06 +0000
@@ -207,7 +207,7 @@
207 rv = gkm_mock_C_CreateObject (hSession, pTemplate, ulCount, phObject);207 rv = gkm_mock_C_CreateObject (hSession, pTemplate, ulCount, phObject);
208208
209 if (template)209 if (template)
210 g_array_free (template, TRUE);210 gkm_template_free (template);
211211
212 return rv;212 return rv;
213}213}
214214
=== modified file 'pkcs11/xdg-store/gkm-xdg-assertion.c'
--- pkcs11/xdg-store/gkm-xdg-assertion.c 2014-12-06 18:47:09 +0000
+++ pkcs11/xdg-store/gkm-xdg-assertion.c 2015-02-27 19:55:06 +0000
@@ -173,6 +173,8 @@
173 "purpose", purpose,173 "purpose", purpose,
174 "peer", peer,174 "peer", peer,
175 NULL);175 NULL);
176 g_free (purpose);
177 g_free (peer);
176178
177 /* Add the assertion to the trust object */179 /* Add the assertion to the trust object */
178 if (!gkm_transaction_get_failed (transaction)) {180 if (!gkm_transaction_get_failed (transaction)) {
179181
=== modified file 'pkcs11/xdg-store/gkm-xdg-trust.c'
--- pkcs11/xdg-store/gkm-xdg-trust.c 2014-04-06 23:26:34 +0000
+++ pkcs11/xdg-store/gkm-xdg-trust.c 2015-02-27 19:55:06 +0000
@@ -371,7 +371,7 @@
371 key = create_assertion_key (gkm_assertion_get_purpose (assertion),371 key = create_assertion_key (gkm_assertion_get_purpose (assertion),
372 gkm_assertion_get_peer (assertion));372 gkm_assertion_get_peer (assertion));
373 g_object_set_qdata_full (G_OBJECT (assertion), QDATA_ASSERTION_KEY,373 g_object_set_qdata_full (G_OBJECT (assertion), QDATA_ASSERTION_KEY,
374 g_bytes_ref (key), (GDestroyNotify)g_bytes_unref);374 key, (GDestroyNotify)g_bytes_unref);
375 }375 }
376376
377 return key;377 return key;
@@ -439,6 +439,7 @@
439 if (!g_hash_table_steal (self->pv->assertions, key))439 if (!g_hash_table_steal (self->pv->assertions, key))
440 g_return_if_reached ();440 g_return_if_reached ();
441 gkm_transaction_add (transaction, self, complete_remove_assertion, assertion);441 gkm_transaction_add (transaction, self, complete_remove_assertion, assertion);
442 g_bytes_unref (key);
442 }443 }
443}444}
444445
@@ -706,6 +707,10 @@
706 g_hash_table_destroy (self->pv->assertions);707 g_hash_table_destroy (self->pv->assertions);
707 self->pv->assertions = NULL;708 self->pv->assertions = NULL;
708709
710 if (self->pv->bytes)
711 g_bytes_unref (self->pv->bytes);
712 self->pv->bytes = NULL;
713
709 G_OBJECT_CLASS (gkm_xdg_trust_parent_class)->finalize (obj);714 G_OBJECT_CLASS (gkm_xdg_trust_parent_class)->finalize (obj);
710}715}
711716
@@ -875,7 +880,6 @@
875 remove_assertion_from_trust (self, previous, transaction);880 remove_assertion_from_trust (self, previous, transaction);
876 add_assertion_to_trust (self, assertion, transaction);881 add_assertion_to_trust (self, assertion, transaction);
877882
878 g_bytes_unref (key);
879}883}
880884
881void885void
882886
=== modified file 'pkcs11/xdg-store/test-xdg-module.c'
--- pkcs11/xdg-store/test-xdg-module.c 2014-04-06 23:26:34 +0000
+++ pkcs11/xdg-store/test-xdg-module.c 2015-02-27 19:55:06 +0000
@@ -190,6 +190,7 @@
190 rv = gkm_session_C_CreateObject (test->session, attrs, G_N_ELEMENTS (attrs), &object);190 rv = gkm_session_C_CreateObject (test->session, attrs, G_N_ELEMENTS (attrs), &object);
191 gkm_assert_cmprv (rv, ==, CKR_OK);191 gkm_assert_cmprv (rv, ==, CKR_OK);
192 gkm_assert_cmpulong (object, !=, 0);192 gkm_assert_cmpulong (object, !=, 0);
193 g_free (data);
193}194}
194195
195static void196static void
196197
=== modified file 'pkcs11/xdg-store/test-xdg-trust.c'
--- pkcs11/xdg-store/test-xdg-trust.c 2014-04-06 23:26:34 +0000
+++ pkcs11/xdg-store/test-xdg-trust.c 2015-02-27 19:55:06 +0000
@@ -656,6 +656,7 @@
656 n_checksum = sizeof (checksum);656 n_checksum = sizeof (checksum);
657 g_checksum_get_digest (md, checksum, &n_checksum);657 g_checksum_get_digest (md, checksum, &n_checksum);
658 g_assert (n_checksum == sizeof (checksum));658 g_assert (n_checksum == sizeof (checksum));
659 g_checksum_free (md);
659660
660 rv = gkm_session_C_FindObjectsInit (test->session, lookup, G_N_ELEMENTS (lookup));661 rv = gkm_session_C_FindObjectsInit (test->session, lookup, G_N_ELEMENTS (lookup));
661 gkm_assert_cmprv (rv, ==, CKR_OK);662 gkm_assert_cmprv (rv, ==, CKR_OK);
662663
=== modified file 'po/LINGUAS'
--- po/LINGUAS 2014-04-06 23:26:34 +0000
+++ po/LINGUAS 2015-02-27 19:55:06 +0000
@@ -42,6 +42,7 @@
42it42it
43ja43ja
44ka44ka
45kk
45km46km
46kn47kn
47ko48ko
4849
=== added file 'po/kk.po'
--- po/kk.po 1970-01-01 00:00:00 +0000
+++ po/kk.po 2015-02-27 19:55:06 +0000
@@ -0,0 +1,572 @@
1# Kazakh translation for gnome-keyring.
2# Copyright (C) 2014 gnome-keyring's COPYRIGHT HOLDER
3# This file is distributed under the same license as the gnome-keyring package.
4# Baurzhan Muftakhidinov <baurthefirst@gmail.com>, 2014.
5#
6msgid ""
7msgstr ""
8"Project-Id-Version: gnome-keyring master\n"
9"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
10"keyring&keywords=I18N+L10N&component=general\n"
11"POT-Creation-Date: 2014-10-28 07:44+0000\n"
12"PO-Revision-Date: 2014-10-28 17:27+0600\n"
13"Last-Translator: Baurzhan Muftakhidinov <baurthefirst@gmail.com>\n"
14"Language-Team: Kazakh <kk@li.org>\n"
15"Language: kk\n"
16"MIME-Version: 1.0\n"
17"Content-Type: text/plain; charset=UTF-8\n"
18"Content-Transfer-Encoding: 8bit\n"
19"X-Generator: Poedit 1.6.9\n"
20
21#. TRANSLATORS: This is the label for an keyring created without a label
22#: ../daemon/dbus/gkd-secret-change.c:85
23#: ../daemon/dbus/gkd-secret-change.c:121
24#: ../daemon/dbus/gkd-secret-create.c:78
25#: ../pkcs11/secret-store/gkm-secret-collection.c:324
26#: ../pkcs11/wrap-layer/gkm-wrap-login.c:345
27#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:753
28msgid "Unnamed"
29msgstr "Атаусыз"
30
31#: ../daemon/dbus/gkd-secret-change.c:90
32#, c-format
33msgid "Enter the old password for the '%s' keyring"
34msgstr "'%s' кілттер бауы үшін ескі парольді енгізіңіз"
35
36#: ../daemon/dbus/gkd-secret-change.c:94
37#, c-format
38msgid ""
39"An application wants to change the password for the '%s' keyring. Enter the "
40"old password for it."
41msgstr ""
42"Қолданба '%s' кілттер бауы үшін парольді өзгерткісі келеді. Ол үшін ескі "
43"парольді енгізіңіз."
44
45#: ../daemon/dbus/gkd-secret-change.c:100
46#: ../daemon/dbus/gkd-secret-change.c:136
47#: ../daemon/dbus/gkd-secret-change.c:147
48#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1143
49#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1255
50#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1290
51msgid "Continue"
52msgstr "Жалғастыру"
53
54#: ../daemon/dbus/gkd-secret-change.c:126
55#, c-format
56msgid "Choose a new password for the '%s' keyring"
57msgstr "'%s' кілттер бауы үшін жаңа парольді таңдаңыз"
58
59#: ../daemon/dbus/gkd-secret-change.c:130
60#, c-format
61msgid ""
62"An application wants to change the password for the '%s' keyring. Choose the "
63"new password you want to use for it."
64msgstr ""
65"Қолданба '%s' кілттер бауы үшін парольді өзгерткісі келеді. Қолданғыңыз "
66"келетін жаңа парольді енгізіңіз."
67
68#: ../daemon/dbus/gkd-secret-change.c:143
69#: ../daemon/dbus/gkd-secret-create.c:94
70msgid "Store passwords unencrypted?"
71msgstr "Парольдерді шифрленбеген түрде сақтау керек пе?"
72
73#: ../daemon/dbus/gkd-secret-change.c:145
74#: ../daemon/dbus/gkd-secret-create.c:96
75msgid ""
76"By choosing to use a blank password, your stored passwords will not be "
77"safely encrypted. They will be accessible by anyone with access to your "
78"files."
79msgstr ""
80"Бос парольді таңдасаңыз, сақталған парольдер шифрленбейтін болады. Яғни, "
81"сіздің файлдарыңызды оқи алатын адам парольдеріңізді де оқи алатын болады."
82
83#: ../daemon/dbus/gkd-secret-change.c:153
84msgid "The original password was incorrect"
85msgstr "Бастапқы паролі қате болды"
86
87#: ../daemon/dbus/gkd-secret-change.c:354
88msgid "Change Keyring Password"
89msgstr "Кілттер бауының паролін өзгерту"
90
91#: ../daemon/dbus/gkd-secret-create.c:80
92#, c-format
93msgid ""
94"An application wants to create a new keyring called '%s'. Choose the "
95"password you want to use for it."
96msgstr ""
97"Қолданба жаңа '%s' кілттер бауын жасағысы келеді. Қолданғыңыз келетін жаңа "
98"парольді енгізіңіз."
99
100#: ../daemon/dbus/gkd-secret-create.c:84
101msgid "Choose password for new keyring"
102msgstr "Кілттер бауы үшін жаңа парольді таңдаңыз"
103
104#: ../daemon/dbus/gkd-secret-create.c:311
105msgid "New Keyring Password"
106msgstr "Кілттер бауының жаңа паролі"
107
108#: ../daemon/gnome-keyring-gpg.desktop.in.in.h:1
109msgid "GPG Password Agent"
110msgstr "GPG парольдер агенті"
111
112#: ../daemon/gnome-keyring-gpg.desktop.in.in.h:2
113msgid "GNOME Keyring: GPG Agent"
114msgstr "GNOME Keyring: GPG агенті"
115
116#: ../daemon/gnome-keyring-pkcs11.desktop.in.in.h:1
117msgid "Certificate and Key Storage"
118msgstr "Сертификаттар және кілттер қоймасы"
119
120#: ../daemon/gnome-keyring-pkcs11.desktop.in.in.h:2
121msgid "GNOME Keyring: PKCS#11 Component"
122msgstr "GNOME Keyring: PKCS#11 құрамасы"
123
124#: ../daemon/gnome-keyring-secrets.desktop.in.in.h:1
125msgid "Secret Storage Service"
126msgstr "Құпия кілттер қоймасы қызметі"
127
128#: ../daemon/gnome-keyring-secrets.desktop.in.in.h:2
129msgid "GNOME Keyring: Secret Service"
130msgstr "GNOME Keyring: Құпия кілттер қызметі"
131
132#: ../daemon/gnome-keyring-ssh.desktop.in.in.h:1
133msgid "SSH Key Agent"
134msgstr "SSH кілттер агенті"
135
136#: ../daemon/gnome-keyring-ssh.desktop.in.in.h:2
137msgid "GNOME Keyring: SSH Agent"
138msgstr "GNOME Keyring: SSH агенті"
139
140#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:105
141msgid "Unknown"
142msgstr "Белгісіз"
143
144#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:202
145#, c-format
146msgid "PGP Key: %s"
147msgstr "PGP кілті: %s"
148
149#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:349
150#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:350
151msgid "Enter Passphrase"
152msgstr "Кілттік фразаны енгізіңіз"
153
154#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:354
155#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:602
156#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:630
157#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:645
158#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:721
159#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:767
160#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:799
161msgid "Unlock"
162msgstr "Босату"
163
164#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:383
165msgid "Automatically unlock this key, whenever I'm logged in"
166msgstr "Мен жүйеге кірген кезде, бұл кілтті автобосату"
167
168#. TRANSLATORS: This is the display label for the login keyring
169#: ../daemon/login/gkd-login.c:150
170msgid "Login"
171msgstr "Кіру"
172
173#: ../egg/dotlock.c:668
174#, c-format
175msgid "failed to create temporary file `%s': %s\n"
176msgstr "`%s' уақытша файлын жасау сәтсіз: %s\n"
177
178#: ../egg/dotlock.c:718
179#, c-format
180msgid "error writing to `%s': %s\n"
181msgstr "`%s' ішіне жазу қатесі: %s\n"
182
183#: ../egg/dotlock.c:782
184#, c-format
185msgid "can't create `%s': %s\n"
186msgstr "`%s' жасау мүмкін емес: %s\n"
187
188#. Note: It is unlikley that we get a race here unless a pid is
189#. reused too fast or a new process with the same pid as the one
190#. of the stale file tries to lock right at the same time as we.
191#: ../egg/dotlock.c:1048
192#, c-format
193msgid "removing stale lockfile (created by %d)\n"
194msgstr "ескірген блоктау файлын өшіру (жасаған %d)\n"
195
196#: ../egg/dotlock.c:1084
197#, c-format
198msgid "waiting for lock (held by %d%s) %s...\n"
199msgstr "блоктауды күту (ұстап отырған %d%s) %s...\n"
200
201#: ../egg/dotlock.c:1085
202msgid "(deadlock?) "
203msgstr "(өзара блоктау?) "
204
205#: ../egg/dotlock.c:1124
206#, c-format
207msgid "lock `%s' not made: %s\n"
208msgstr "`%s' блоктауы жасалмады: %s\n"
209
210#: ../egg/dotlock.c:1150
211#, c-format
212msgid "waiting for lock %s...\n"
213msgstr "%s блоктауын күту...\n"
214
215#: ../egg/egg-oid.c:40
216msgid "Domain Component"
217msgstr "Домен құрамасы"
218
219#: ../egg/egg-oid.c:42
220msgid "User ID"
221msgstr "Пайдаланушы ID"
222
223#: ../egg/egg-oid.c:45
224msgid "Email Address"
225msgstr "Эл. пошта адресі"
226
227#: ../egg/egg-oid.c:53
228msgid "Date of Birth"
229msgstr "Туған күні"
230
231#: ../egg/egg-oid.c:55
232msgid "Place of Birth"
233msgstr "Туған жері"
234
235#: ../egg/egg-oid.c:57
236msgid "Gender"
237msgstr "Жынысы"
238
239#: ../egg/egg-oid.c:59
240msgid "Country of Citizenship"
241msgstr "Қай елдің азаматы"
242
243#: ../egg/egg-oid.c:61
244msgid "Country of Residence"
245msgstr "Тұрып жатқан ел"
246
247#: ../egg/egg-oid.c:64
248msgid "Common Name"
249msgstr "Жалпы аты"
250
251#: ../egg/egg-oid.c:66
252msgid "Surname"
253msgstr "Фамилия"
254
255#: ../egg/egg-oid.c:68
256msgid "Serial Number"
257msgstr "Сериялық нөмірі"
258
259#: ../egg/egg-oid.c:70
260msgid "Country"
261msgstr "Ел"
262
263#: ../egg/egg-oid.c:72
264msgid "Locality"
265msgstr "Аймақ"
266
267#: ../egg/egg-oid.c:74
268msgid "State"
269msgstr "Штат"
270
271#: ../egg/egg-oid.c:76
272msgid "Street"
273msgstr "Көше"
274
275#: ../egg/egg-oid.c:78
276msgid "Organization"
277msgstr "Ұйым"
278
279#: ../egg/egg-oid.c:80
280msgid "Organizational Unit"
281msgstr "Ұйым бөлімі"
282
283#: ../egg/egg-oid.c:82
284msgid "Title"
285msgstr "Атауы"
286
287#: ../egg/egg-oid.c:84
288msgid "Telephone Number"
289msgstr "Телефон нөмірі"
290
291#: ../egg/egg-oid.c:86
292msgid "Given Name"
293msgstr "Аты"
294
295#: ../egg/egg-oid.c:88
296msgid "Initials"
297msgstr "Инициалдар"
298
299#: ../egg/egg-oid.c:90
300msgid "Generation Qualifier"
301msgstr "Ұрпақ белгісі"
302
303#: ../egg/egg-oid.c:92
304msgid "DN Qualifier"
305msgstr "Айыру атының белгісі"
306
307#: ../egg/egg-oid.c:94
308msgid "Pseudonym"
309msgstr "Псевдоним"
310
311#: ../egg/egg-oid.c:97
312msgid "RSA"
313msgstr "RSA"
314
315#: ../egg/egg-oid.c:98
316msgid "MD2 with RSA"
317msgstr "RSA қолданатын MD2"
318
319#: ../egg/egg-oid.c:99
320msgid "MD5 with RSA"
321msgstr "RSA қолданатын MD5"
322
323#: ../egg/egg-oid.c:100
324msgid "SHA1 with RSA"
325msgstr "RSA қолданатын SHA1 "
326
327#: ../egg/egg-oid.c:102
328msgid "DSA"
329msgstr "DSA"
330
331#: ../egg/egg-oid.c:103
332msgid "SHA1 with DSA"
333msgstr "DSA қолданатын SHA1 "
334
335#. Extended Key Usages
336#: ../egg/egg-oid.c:106
337msgid "Server Authentication"
338msgstr "Сервер аутентификациясы"
339
340#: ../egg/egg-oid.c:107
341msgid "Client Authentication"
342msgstr "Клиент аутентификациясы"
343
344#: ../egg/egg-oid.c:108
345msgid "Code Signing"
346msgstr "Кодқа қолтаңба қою"
347
348#: ../egg/egg-oid.c:109
349msgid "Email Protection"
350msgstr "Эл. поштаны қорғау"
351
352#: ../egg/egg-oid.c:110
353msgid "Time Stamping"
354msgstr "Уақыт белгісі қою"
355
356#: ../egg/egg-spawn.c:272
357#, c-format
358msgid "Unexpected error in select() reading data from a child process (%s)"
359msgstr ""
360"Ұрпақ процестен мәліметті оқу кезінде select() ішіндегі күтпеген қате (%s)"
361
362#: ../egg/egg-spawn.c:319
363#, c-format
364msgid "Unexpected error in waitpid() (%s)"
365msgstr "Күтпеген waitpid() қатесі (%s)"
366
367#: ../pkcs11/gkm/gkm-certificate.c:580
368msgid "Unnamed Certificate"
369msgstr "Атаусыз сертификат"
370
371#: ../pkcs11/ssh-store/gkm-ssh-private-key.c:341
372msgid "Couldn't parse public SSH key"
373msgstr "Публикалық SSH кілтін талдау мүмкін емес"
374
375#. Get the label ready
376#: ../pkcs11/wrap-layer/gkm-wrap-login.c:345
377#, c-format
378msgid "Unlock password for: %s"
379msgstr "Босату паролі үшін: %s"
380
381#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:590
382msgid "Unlock Login Keyring"
383msgstr "Жүйеге кіру кілттер бауын босату"
384
385#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:592
386msgid "Enter password to unlock your login keyring"
387msgstr "Жүйеге кіру кілттер бауын босату үшін парольді енгізіңіз"
388
389#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:596
390msgid ""
391"The password you use to log in to your computer no longer matches that of "
392"your login keyring."
393msgstr ""
394"Компьютеріңізге кіру үшін қолданылатын пароль енді жүйеге кіру кілттер бауы "
395"паролімен сәйкес келмейді."
396
397#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:598
398msgid ""
399"The login keyring did not get unlocked when you logged into your computer."
400msgstr ""
401"Жүйеге кіру кілттер бауы сіз жүйеге кірген кезде блоктаудан босатылмады."
402
403#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:616
404msgid "Unlock Keyring"
405msgstr "Кілттер бауын босату"
406
407#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:618
408#, c-format
409msgid "Enter password for keyring '%s' to unlock"
410msgstr "'%s' кілттер бауын блоктаудан босату үшін парольді енгізіңіз"
411
412#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:622
413#, c-format
414msgid "An application wants access to the keyring '%s', but it is locked"
415msgstr ""
416"Қолданба '%s' кілттер бауына қатынау талабын жасағысы келеді, бірақ, ол "
417"блокталған"
418
419#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:628
420msgid "Automatically unlock this keyring whenever I'm logged in"
421msgstr "Мен жүйеге кірген кезде, бұл кілттер бауын автобосату"
422
423#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:639
424msgid "Unlock private key"
425msgstr "Жеке кілтті блоктаудан босату"
426
427#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:641
428msgid "Unlock certificate"
429msgstr "Сертификатты блоктаудан босату"
430
431#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:643
432msgid "Unlock public key"
433msgstr "Публикалық кілтті блоктаудан босату"
434
435#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:654
436msgid "Enter password to unlock the private key"
437msgstr "Жеке кілтті блоктаудан босату үшін парольді енгізіңіз"
438
439#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:656
440msgid "Enter password to unlock the certificate"
441msgstr "Сертификатты блоктаудан босату үшін парольді енгізіңіз"
442
443#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:658
444msgid "Enter password to unlock the public key"
445msgstr "Публикалық кілтті босату үшін парольді енгізіңіз"
446
447#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:660
448msgid "Enter password to unlock"
449msgstr "Блоктаудан босату үшін парольді енгізіңіз"
450
451#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:670
452msgid "Automatically unlock this key whenever I'm logged in"
453msgstr "Мен жүйеге кірген кезде, бұл кілтті автобосату"
454
455#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:672
456msgid "Automatically unlock this certificate whenever I'm logged in"
457msgstr "Мен жүйеге кірген кезде, бұл сертификатты автобосату"
458
459#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:674
460#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:796
461#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1140
462#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1288
463msgid "Automatically unlock whenever I'm logged in"
464msgstr "Мен жүйеге кірген кезде, автобосату"
465
466#. TRANSLATORS: The private key is locked
467#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:685
468#, c-format
469msgid "An application wants access to the private key '%s', but it is locked"
470msgstr ""
471"Қолданба '%s' жеке кілтіне қатынау талабын жасағысы келеді, бірақ, ол "
472"блокталған"
473
474#. TRANSLATORS: The certificate is locked
475#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:688
476#, c-format
477msgid "An application wants access to the certificate '%s', but it is locked"
478msgstr ""
479"Қолданба '%s' сертификатына қатынау талабын жасағысы келеді, бірақ, ол "
480"блокталған"
481
482#. TRANSLATORS: The public key is locked
483#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:691
484#, c-format
485msgid "An application wants access to the public key '%s', but it is locked"
486msgstr ""
487"Қолданба '%s' публикалық кілтіне қатынау талабын жасағысы келеді, бірақ, ол "
488"блокталған"
489
490#. TRANSLATORS: The object '%s' is locked
491#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:694
492#, c-format
493msgid "An application wants access to '%s', but it is locked"
494msgstr ""
495"Қолданба '%s' үшін қатынау талабын жасағысы келеді, бірақ, ол блокталған"
496
497#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:765
498msgid "The unlock password was incorrect"
499msgstr "Босату паролі қате болды"
500
501#. Build up the prompt
502#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:786
503msgid "Unlock certificate/key storage"
504msgstr "Сертификаттар/кілттер қоймасын блоктаудан босату"
505
506#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:787
507msgid "Enter password to unlock the certificate/key storage"
508msgstr ""
509"Сертификаттар/кілттер қоймасын блоктаудан босату үшін парольді енгізіңіз"
510
511#. TRANSLATORS: The storage is locked, and needs unlocking before the application can use it.
512#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:790
513#, c-format
514msgid ""
515"An application wants access to the certificate/key storage '%s', but it is "
516"locked"
517msgstr ""
518"Қолданба '%s' сертификаттар/кілттер қоймасына қатынау талабын жасағысы "
519"келеді, бірақ, ол блокталған"
520
521#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1131
522msgid "New Password Required"
523msgstr "Жаңа пароль керек"
524
525#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1132
526msgid "New password required for secure storage"
527msgstr "Қауіпсіз қойма үшін жаңа пароль керек"
528
529#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1134
530#, c-format
531msgid ""
532"In order to prepare '%s' for storage of certificates or keys, a password is "
533"required"
534msgstr ""
535"'%s' ішіне сертификаттар не кілттерді сақтауға дайындау үшін пароль керек"
536
537#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1248
538#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1279
539msgid "Change Password"
540msgstr "Парольді өзгерту"
541
542#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1249
543msgid "Original password for secure storage"
544msgstr "Қауіпсіз қойма үшін ескі паролі"
545
546#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1251
547#, c-format
548msgid "To change the password for '%s', the original password is required"
549msgstr "'%s' паролін өзгерту үшін ескі паролі қажет"
550
551#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1280
552msgid "Change password for secure storage"
553msgstr "Қауіпсіз қойма үшін парольді өзгерту"
554
555#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1282
556#, c-format
557msgid "Type a new password for '%s'"
558msgstr "'%s' үшін жаңа парольді енгізіңіз"
559
560#: ../tool/gkr-tool.c:100
561#, c-format
562msgid "usage: gnome-keyring command [options]\n"
563msgstr "қолданылуы: gnome-keyring команда [опциялар]\n"
564
565#: ../tool/gkr-tool.c:102
566msgid "commands: "
567msgstr "командалар: "
568
569#. Translators: keep same length as translated message "commands: "
570#: ../tool/gkr-tool.c:106
571msgid " "
572msgstr " "
0573
=== modified file 'po/tr.po'
--- po/tr.po 2013-11-15 15:32:11 +0000
+++ po/tr.po 2015-02-27 19:55:06 +0000
@@ -8,15 +8,15 @@
8# Serdar CICEK <serdar@nerd.com.tr>, 2008.8# Serdar CICEK <serdar@nerd.com.tr>, 2008.
9# Baris Cicek <baris@teamforce.name.tr>, 2008, 2009.9# Baris Cicek <baris@teamforce.name.tr>, 2008, 2009.
10# Osman Karagöz <osmank3@gmail.com>, 2013.10# Osman Karagöz <osmank3@gmail.com>, 2013.
11# Muhammet Kara <muhammetk@gmail.com>, 2011, 2013.11# Muhammet Kara <muhammetk@gmail.com>, 2011, 2013, 2014.
12#12#
13msgid ""13msgid ""
14msgstr ""14msgstr ""
15"Project-Id-Version: gnome-keyring\n"15"Project-Id-Version: gnome-keyring\n"
16"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"16"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
17"keyring&keywords=I18N+L10N&component=general\n"17"keyring&keywords=I18N+L10N&component=general\n"
18"POT-Creation-Date: 2013-08-26 16:32+0000\n"18"POT-Creation-Date: 2014-12-06 19:51+0000\n"
19"PO-Revision-Date: 2013-09-01 13:11+0300\n"19"PO-Revision-Date: 2014-12-07 00:18+0200\n"
20"Last-Translator: Muhammet Kara <muhammetk@gmail.com>\n"20"Last-Translator: Muhammet Kara <muhammetk@gmail.com>\n"
21"Language-Team: Türkçe <gnome-turk@gnome.org>\n"21"Language-Team: Türkçe <gnome-turk@gnome.org>\n"
22"Language: tr\n"22"Language: tr\n"
@@ -27,21 +27,21 @@
27"X-Generator: Gtranslator 2.91.6\n"27"X-Generator: Gtranslator 2.91.6\n"
2828
29#. TRANSLATORS: This is the label for an keyring created without a label29#. TRANSLATORS: This is the label for an keyring created without a label
30#: ../daemon/dbus/gkd-secret-change.c:8630#: ../daemon/dbus/gkd-secret-change.c:85
31#: ../daemon/dbus/gkd-secret-change.c:12231#: ../daemon/dbus/gkd-secret-change.c:121
32#: ../daemon/dbus/gkd-secret-create.c:7932#: ../daemon/dbus/gkd-secret-create.c:78
33#: ../pkcs11/secret-store/gkm-secret-collection.c:32533#: ../pkcs11/secret-store/gkm-secret-collection.c:324
34#: ../pkcs11/wrap-layer/gkm-wrap-login.c:34634#: ../pkcs11/wrap-layer/gkm-wrap-login.c:345
35#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:75435#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:753
36msgid "Unnamed"36msgid "Unnamed"
37msgstr "Adsız"37msgstr "Adsız"
3838
39#: ../daemon/dbus/gkd-secret-change.c:9139#: ../daemon/dbus/gkd-secret-change.c:90
40#, c-format40#, c-format
41msgid "Enter the old password for the '%s' keyring"41msgid "Enter the old password for the '%s' keyring"
42msgstr "'%s' anahtarlığı için eski parolayı girin"42msgstr "'%s' anahtarlığı için eski parolayı girin"
4343
44#: ../daemon/dbus/gkd-secret-change.c:9544#: ../daemon/dbus/gkd-secret-change.c:94
45#, c-format45#, c-format
46msgid ""46msgid ""
47"An application wants to change the password for the '%s' keyring. Enter the "47"An application wants to change the password for the '%s' keyring. Enter the "
@@ -50,21 +50,21 @@
50"Bir uygulama '%s' anahtarlığının parolasını değiştirmek istiyor. Bu "50"Bir uygulama '%s' anahtarlığının parolasını değiştirmek istiyor. Bu "
51"anahtarlık için eski parolayı girin."51"anahtarlık için eski parolayı girin."
5252
53#: ../daemon/dbus/gkd-secret-change.c:10153#: ../daemon/dbus/gkd-secret-change.c:100
54#: ../daemon/dbus/gkd-secret-change.c:13754#: ../daemon/dbus/gkd-secret-change.c:136
55#: ../daemon/dbus/gkd-secret-change.c:14855#: ../daemon/dbus/gkd-secret-change.c:147
56#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:114456#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1163
57#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:125657#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1276
58#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:129158#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1311
59msgid "Continue"59msgid "Continue"
60msgstr "Devam"60msgstr "Devam"
6161
62#: ../daemon/dbus/gkd-secret-change.c:12762#: ../daemon/dbus/gkd-secret-change.c:126
63#, c-format63#, c-format
64msgid "Choose a new password for the '%s' keyring"64msgid "Choose a new password for the '%s' keyring"
65msgstr "'%s' anahtarlığı için yeni bir parola belirleyin"65msgstr "'%s' anahtarlığı için yeni bir parola belirleyin"
6666
67#: ../daemon/dbus/gkd-secret-change.c:13167#: ../daemon/dbus/gkd-secret-change.c:130
68#, c-format68#, c-format
69msgid ""69msgid ""
70"An application wants to change the password for the '%s' keyring. Choose the "70"An application wants to change the password for the '%s' keyring. Choose the "
@@ -73,13 +73,13 @@
73"Bir uygulama '%s' anahtarlığının parolasını değiştirmek istiyor. Bu "73"Bir uygulama '%s' anahtarlığının parolasını değiştirmek istiyor. Bu "
74"anahtarlık için kullanmak istediğiniz yeni parolayı seçin."74"anahtarlık için kullanmak istediğiniz yeni parolayı seçin."
7575
76#: ../daemon/dbus/gkd-secret-change.c:14476#: ../daemon/dbus/gkd-secret-change.c:143
77#: ../daemon/dbus/gkd-secret-create.c:9577#: ../daemon/dbus/gkd-secret-create.c:94
78msgid "Store passwords unencrypted?"78msgid "Store passwords unencrypted?"
79msgstr "Parolalar şifrelenmeden depolansın mı?"79msgstr "Parolalar şifrelenmeden depolansın mı?"
8080
81#: ../daemon/dbus/gkd-secret-change.c:14681#: ../daemon/dbus/gkd-secret-change.c:145
82#: ../daemon/dbus/gkd-secret-create.c:9782#: ../daemon/dbus/gkd-secret-create.c:96
83msgid ""83msgid ""
84"By choosing to use a blank password, your stored passwords will not be "84"By choosing to use a blank password, your stored passwords will not be "
85"safely encrypted. They will be accessible by anyone with access to your "85"safely encrypted. They will be accessible by anyone with access to your "
@@ -88,15 +88,15 @@
88"Parolayı boş kullanmak seçildiğinde, depolanan parolalarınız güvenli olarak "88"Parolayı boş kullanmak seçildiğinde, depolanan parolalarınız güvenli olarak "
89"şifrelenmeyecek. Parolalarınıza dosyalarınıza erişebilen kişiler erişecek."89"şifrelenmeyecek. Parolalarınıza dosyalarınıza erişebilen kişiler erişecek."
9090
91#: ../daemon/dbus/gkd-secret-change.c:15491#: ../daemon/dbus/gkd-secret-change.c:153
92msgid "The original password was incorrect"92msgid "The original password was incorrect"
93msgstr "Asıl parola yanlış"93msgstr "Asıl parola yanlış"
9494
95#: ../daemon/dbus/gkd-secret-change.c:35595#: ../daemon/dbus/gkd-secret-change.c:354
96msgid "Change Keyring Password"96msgid "Change Keyring Password"
97msgstr "Anahtarlık Parolası Değiştir"97msgstr "Anahtarlık Parolası Değiştir"
9898
99#: ../daemon/dbus/gkd-secret-create.c:8199#: ../daemon/dbus/gkd-secret-create.c:80
100#, c-format100#, c-format
101msgid ""101msgid ""
102"An application wants to create a new keyring called '%s'. Choose the "102"An application wants to create a new keyring called '%s'. Choose the "
@@ -105,11 +105,11 @@
105"Bir uygulama '%s' adlı yeni bir anahtarlık oluşturmak istiyor. Bunun için "105"Bir uygulama '%s' adlı yeni bir anahtarlık oluşturmak istiyor. Bunun için "
106"kullanmak istediğiniz parolayı seçin."106"kullanmak istediğiniz parolayı seçin."
107107
108#: ../daemon/dbus/gkd-secret-create.c:85108#: ../daemon/dbus/gkd-secret-create.c:84
109msgid "Choose password for new keyring"109msgid "Choose password for new keyring"
110msgstr "Yeni anahtarlık için parola seçin"110msgstr "Yeni anahtarlık için parola seçin"
111111
112#: ../daemon/dbus/gkd-secret-create.c:312112#: ../daemon/dbus/gkd-secret-create.c:311
113msgid "New Keyring Password"113msgid "New Keyring Password"
114msgstr "Yeni Anahtarlık Parolası"114msgstr "Yeni Anahtarlık Parolası"
115115
@@ -145,36 +145,36 @@
145msgid "GNOME Keyring: SSH Agent"145msgid "GNOME Keyring: SSH Agent"
146msgstr "GNOME Anahtarlığı: SSH Aracı"146msgstr "GNOME Anahtarlığı: SSH Aracı"
147147
148#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:106148#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:82
149msgid "Unknown"149msgid "Unknown"
150msgstr "Bilinmeyen"150msgstr "Bilinmeyen"
151151
152#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:203152#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:144
153#, c-format153#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:145
154msgid "PGP Key: %s"
155msgstr "PGP Anahtarı: %s"
156
157#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:350
158#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:351
159msgid "Enter Passphrase"154msgid "Enter Passphrase"
160msgstr "Parola Metnini Girin"155msgstr "Parola Metnini Girin"
161156
162#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:355157#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:149
163#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:603158#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:602
164#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:631159#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:630
165#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:646160#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:645
166#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:722161#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:721
167#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:768162#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:767
168#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:800163#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:799
169msgid "Unlock"164msgid "Unlock"
170msgstr "Kilidini kaldır"165msgstr "Kilidini kaldır"
171166
172#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:384167#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:162
173msgid "Automatically unlock this key, whenever I'm logged in"168msgid "Automatically unlock this key, whenever I'm logged in"
174msgstr "Her oturum açtığımda, bu anahtarın kilidini otomatik olarak aç"169msgstr "Her oturum açtığımda, bu anahtarın kilidini otomatik olarak aç"
175170
171#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:225
172#, c-format
173msgid "PGP Key: %s"
174msgstr "PGP Anahtarı: %s"
175
176#. TRANSLATORS: This is the display label for the login keyring176#. TRANSLATORS: This is the display label for the login keyring
177#: ../daemon/login/gkd-login.c:145177#: ../daemon/login/gkd-login.c:158
178msgid "Login"178msgid "Login"
179msgstr "Giriş"179msgstr "Giriş"
180180
@@ -221,257 +221,256 @@
221msgid "waiting for lock %s...\n"221msgid "waiting for lock %s...\n"
222msgstr "%s kilidi bekleniyor...\n"222msgstr "%s kilidi bekleniyor...\n"
223223
224#: ../egg/egg-oid.c:41224#: ../egg/egg-oid.c:40
225msgid "Domain Component"225msgid "Domain Component"
226msgstr "Alan Bileşeni"226msgstr "Alan Bileşeni"
227227
228#: ../egg/egg-oid.c:43228#: ../egg/egg-oid.c:42
229msgid "User ID"229msgid "User ID"
230msgstr "Kullanıcı ID"230msgstr "Kullanıcı ID"
231231
232#: ../egg/egg-oid.c:46232#: ../egg/egg-oid.c:45
233msgid "Email Address"233msgid "Email Address"
234msgstr "E-posta Adresi"234msgstr "E-posta Adresi"
235235
236#: ../egg/egg-oid.c:54236#: ../egg/egg-oid.c:53
237msgid "Date of Birth"237msgid "Date of Birth"
238msgstr "Doğum Tarihi"238msgstr "Doğum Tarihi"
239239
240#: ../egg/egg-oid.c:56240#: ../egg/egg-oid.c:55
241msgid "Place of Birth"241msgid "Place of Birth"
242msgstr "Doğum Yeri"242msgstr "Doğum Yeri"
243243
244#: ../egg/egg-oid.c:58244#: ../egg/egg-oid.c:57
245msgid "Gender"245msgid "Gender"
246msgstr "Cinsiyet"246msgstr "Cinsiyet"
247247
248#: ../egg/egg-oid.c:60248#: ../egg/egg-oid.c:59
249msgid "Country of Citizenship"249msgid "Country of Citizenship"
250msgstr "Vatandaşlık Ülkesi"250msgstr "Vatandaşlık Ülkesi"
251251
252#: ../egg/egg-oid.c:62252#: ../egg/egg-oid.c:61
253msgid "Country of Residence"253msgid "Country of Residence"
254msgstr "Yerleşim Ülkesi"254msgstr "Yerleşim Ülkesi"
255255
256#: ../egg/egg-oid.c:65256#: ../egg/egg-oid.c:64
257msgid "Common Name"257msgid "Common Name"
258msgstr "Ortak Ad"258msgstr "Ortak Ad"
259259
260#: ../egg/egg-oid.c:67260#: ../egg/egg-oid.c:66
261msgid "Surname"261msgid "Surname"
262msgstr "Soyadı"262msgstr "Soyadı"
263263
264#: ../egg/egg-oid.c:69264#: ../egg/egg-oid.c:68
265msgid "Serial Number"265msgid "Serial Number"
266msgstr "Seri Numarası"266msgstr "Seri Numarası"
267267
268#: ../egg/egg-oid.c:71268#: ../egg/egg-oid.c:70
269msgid "Country"269msgid "Country"
270msgstr "Ülke"270msgstr "Ülke"
271271
272#: ../egg/egg-oid.c:73272#: ../egg/egg-oid.c:72
273msgid "Locality"273msgid "Locality"
274msgstr "Yöre"274msgstr "Yöre"
275275
276#: ../egg/egg-oid.c:75276#: ../egg/egg-oid.c:74
277msgid "State"277msgid "State"
278msgstr "Eyalet"278msgstr "Eyalet"
279279
280#: ../egg/egg-oid.c:77280#: ../egg/egg-oid.c:76
281msgid "Street"281msgid "Street"
282msgstr "Sokak"282msgstr "Sokak"
283283
284#: ../egg/egg-oid.c:79284#: ../egg/egg-oid.c:78
285msgid "Organization"285msgid "Organization"
286msgstr "Organizasyon"286msgstr "Organizasyon"
287287
288#: ../egg/egg-oid.c:81288#: ../egg/egg-oid.c:80
289msgid "Organizational Unit"289msgid "Organizational Unit"
290msgstr "Organizasyon Birimi"290msgstr "Organizasyon Birimi"
291291
292#: ../egg/egg-oid.c:83292#: ../egg/egg-oid.c:82
293msgid "Title"293msgid "Title"
294msgstr "Başlık"294msgstr "Başlık"
295295
296#: ../egg/egg-oid.c:85296#: ../egg/egg-oid.c:84
297msgid "Telephone Number"297msgid "Telephone Number"
298msgstr "Telefon Numarası"298msgstr "Telefon Numarası"
299299
300#: ../egg/egg-oid.c:87300#: ../egg/egg-oid.c:86
301msgid "Given Name"301msgid "Given Name"
302msgstr "Verilen Ad"302msgstr "Verilen Ad"
303303
304#: ../egg/egg-oid.c:89304#: ../egg/egg-oid.c:88
305msgid "Initials"305msgid "Initials"
306msgstr "Başharfleri"306msgstr "Başharfleri"
307307
308#: ../egg/egg-oid.c:91308#: ../egg/egg-oid.c:90
309msgid "Generation Qualifier"309msgid "Generation Qualifier"
310msgstr "Üretim Belirteci"310msgstr "Üretim Belirteci"
311311
312#: ../egg/egg-oid.c:93312#: ../egg/egg-oid.c:92
313msgid "DN Qualifier"313msgid "DN Qualifier"
314msgstr "DN Belirteci"314msgstr "DN Belirteci"
315315
316#: ../egg/egg-oid.c:95316#: ../egg/egg-oid.c:94
317msgid "Pseudonym"317msgid "Pseudonym"
318msgstr "Takma ad"318msgstr "Takma ad"
319319
320#: ../egg/egg-oid.c:98320#: ../egg/egg-oid.c:97
321msgid "RSA"321msgid "RSA"
322msgstr "RSA"322msgstr "RSA"
323323
324#: ../egg/egg-oid.c:99324#: ../egg/egg-oid.c:98
325msgid "MD2 with RSA"325msgid "MD2 with RSA"
326msgstr "RSA ile MD2"326msgstr "RSA ile MD2"
327327
328#: ../egg/egg-oid.c:100328#: ../egg/egg-oid.c:99
329msgid "MD5 with RSA"329msgid "MD5 with RSA"
330msgstr "RSA ile MD5"330msgstr "RSA ile MD5"
331331
332#: ../egg/egg-oid.c:101332#: ../egg/egg-oid.c:100
333msgid "SHA1 with RSA"333msgid "SHA1 with RSA"
334msgstr "RSA ile SHA1"334msgstr "RSA ile SHA1"
335335
336#: ../egg/egg-oid.c:103336#: ../egg/egg-oid.c:102
337msgid "DSA"337msgid "DSA"
338msgstr "DSA"338msgstr "DSA"
339339
340#: ../egg/egg-oid.c:104340#: ../egg/egg-oid.c:103
341msgid "SHA1 with DSA"341msgid "SHA1 with DSA"
342msgstr "DSA ile SHA1"342msgstr "DSA ile SHA1"
343343
344#. Extended Key Usages344#. Extended Key Usages
345#: ../egg/egg-oid.c:107345#: ../egg/egg-oid.c:106
346msgid "Server Authentication"346msgid "Server Authentication"
347msgstr "Sunucu Kimlik Denetimi"347msgstr "Sunucu Kimlik Denetimi"
348348
349#: ../egg/egg-oid.c:108349#: ../egg/egg-oid.c:107
350msgid "Client Authentication"350msgid "Client Authentication"
351msgstr "İstemci Kimlik Denetimi"351msgstr "İstemci Kimlik Denetimi"
352352
353#: ../egg/egg-oid.c:109353#: ../egg/egg-oid.c:108
354msgid "Code Signing"354msgid "Code Signing"
355msgstr "Kod İmzalama"355msgstr "Kod İmzalama"
356356
357#: ../egg/egg-oid.c:110357#: ../egg/egg-oid.c:109
358msgid "Email Protection"358msgid "Email Protection"
359msgstr "E-posta Koruma"359msgstr "E-posta Koruma"
360360
361#: ../egg/egg-oid.c:111361#: ../egg/egg-oid.c:110
362msgid "Time Stamping"362msgid "Time Stamping"
363msgstr "Zaman Damgalama"363msgstr "Zaman Damgalama"
364364
365#: ../egg/egg-spawn.c:273365#: ../egg/egg-spawn.c:272
366#, c-format366#, c-format
367msgid "Unexpected error in select() reading data from a child process (%s)"367msgid "Unexpected error in select() reading data from a child process (%s)"
368msgstr "Alt süreçten bilgi okurken select()'te beklenmeyen hata oluştu (%s)"368msgstr "Alt süreçten bilgi okurken select()'te beklenmeyen hata oluştu (%s)"
369369
370#: ../egg/egg-spawn.c:320370#: ../egg/egg-spawn.c:319
371#, c-format371#, c-format
372msgid "Unexpected error in waitpid() (%s)"372msgid "Unexpected error in waitpid() (%s)"
373msgstr "waitpid()'de beklenmedik hata oluştu(%s)"373msgstr "waitpid()'de beklenmedik hata oluştu(%s)"
374374
375#: ../pkcs11/gkm/gkm-certificate.c:581375#: ../pkcs11/gkm/gkm-certificate.c:580
376msgid "Unnamed Certificate"376msgid "Unnamed Certificate"
377msgstr "İsimlendirilmemiş Sertifika"377msgstr "İsimlendirilmemiş Sertifika"
378378
379#: ../pkcs11/ssh-store/gkm-ssh-private-key.c:342379#: ../pkcs11/ssh-store/gkm-ssh-private-key.c:341
380msgid "Couldn't parse public SSH key"380msgid "Couldn't parse public SSH key"
381msgstr "Genel SSH anahtarı ayrıştırılamadı"381msgstr "Genel SSH anahtarı ayrıştırılamadı"
382382
383#. Get the label ready383#. Get the label ready
384#: ../pkcs11/wrap-layer/gkm-wrap-login.c:346384#: ../pkcs11/wrap-layer/gkm-wrap-login.c:345
385#, c-format385#, c-format
386msgid "Unlock password for: %s"386msgid "Unlock password for: %s"
387msgstr "Şunun için kilit açma şifresi: %s"387msgstr "Şunun için kilit açma şifresi: %s"
388388
389#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:591389#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:590
390msgid "Unlock Login Keyring"390msgid "Unlock Login Keyring"
391msgstr "Giriş Anahtarlık Kilidini Kaldır"391msgstr "Giriş Anahtarlık Kilidini Kaldır"
392392
393#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:593393#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:592
394msgid "Enter password to unlock your login keyring"394msgid "Enter password to unlock your login keyring"
395msgstr "Giriş anahtarlığınızı açmak için parolayı girin"395msgstr "Giriş anahtarlığınızı açmak için parolayı girin"
396396
397#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:597397#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:596
398#, fuzzy
399msgid ""398msgid ""
400"The password you use to log in to your computer no longer matches that of "399"The password you use to log in to your computer no longer matches that of "
401"your login keyring."400"your login keyring."
402msgstr ""401msgstr ""
403"Bilgisayarınıza giriş yamak için kullandığınız şifre artık giriş "402"Bilgisayarınıza giriş yapmak için kullandığınız parola artık giriş "
404"anahtarlığınızla uyuşmuyor."403"anahtarlığınızla uyuşmuyor."
405404
406#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:599405#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:598
407msgid ""406msgid ""
408"The login keyring did not get unlocked when you logged into your computer."407"The login keyring did not get unlocked when you logged into your computer."
409msgstr "Giriş anahtarlığı, bilgisayarınıza giriş yaptığınızda açılmadı."408msgstr "Giriş anahtarlığı, bilgisayarınıza giriş yaptığınızda açılmadı."
410409
411#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:617410#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:616
412msgid "Unlock Keyring"411msgid "Unlock Keyring"
413msgstr "Anahtarlık Kilidini Aç"412msgstr "Anahtarlık Kilidini Aç"
414413
415#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:619414#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:618
416#, c-format415#, c-format
417msgid "Enter password for keyring '%s' to unlock"416msgid "Enter password for keyring '%s' to unlock"
418msgstr "'%s' anahtarlık kilidini açmak için parola girin"417msgstr "'%s' anahtarlık kilidini açmak için parola girin"
419418
420#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:623419#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:622
421#, c-format420#, c-format
422msgid "An application wants access to the keyring '%s', but it is locked"421msgid "An application wants access to the keyring '%s', but it is locked"
423msgstr ""422msgstr ""
424"Bir uygulama '%s' anahtarlığına erişmek istiyor, ancak anahtarlık kilitli"423"Bir uygulama '%s' anahtarlığına erişmek istiyor, ancak anahtarlık kilitli"
425424
426#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:629425#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:628
427msgid "Automatically unlock this keyring whenever I'm logged in"426msgid "Automatically unlock this keyring whenever I'm logged in"
428msgstr "Her oturum açtığımda, bu anahtarlığın kilidini otomatik olarak aç"427msgstr "Her oturum açtığımda, bu anahtarlığın kilidini otomatik olarak aç"
429428
430#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:640429#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:639
431msgid "Unlock private key"430msgid "Unlock private key"
432msgstr "Özel anahtarın kilidini kaldır"431msgstr "Özel anahtarın kilidini kaldır"
433432
434#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:642433#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:641
435msgid "Unlock certificate"434msgid "Unlock certificate"
436msgstr "Sertifikanın kilidini kaldır"435msgstr "Sertifikanın kilidini kaldır"
437436
438#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:644437#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:643
439msgid "Unlock public key"438msgid "Unlock public key"
440msgstr "Genel anahtarın kilidini kaldır"439msgstr "Genel anahtarın kilidini kaldır"
441440
442#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:655441#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:654
443msgid "Enter password to unlock the private key"442msgid "Enter password to unlock the private key"
444msgstr "Özel anahtarlık kilidini açmak için parola girin"443msgstr "Özel anahtarlık kilidini açmak için parola girin"
445444
446#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:657445#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:656
447msgid "Enter password to unlock the certificate"446msgid "Enter password to unlock the certificate"
448msgstr "Sertifikanın kilidini açmak için parola girin"447msgstr "Sertifikanın kilidini açmak için parola girin"
449448
450#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:659449#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:658
451msgid "Enter password to unlock the public key"450msgid "Enter password to unlock the public key"
452msgstr "Genel anahtarlık kilidini açmak için parola girin"451msgstr "Genel anahtarlık kilidini açmak için parola girin"
453452
454#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:661453#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:660
455msgid "Enter password to unlock"454msgid "Enter password to unlock"
456msgstr "Kilidini açmak için parola girin"455msgstr "Kilidini açmak için parola girin"
457456
458#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:671457#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:670
459msgid "Automatically unlock this key whenever I'm logged in"458msgid "Automatically unlock this key whenever I'm logged in"
460msgstr "Her oturum açtığımda, bu anahtarın kilidini otomatik olarak aç"459msgstr "Her oturum açtığımda, bu anahtarın kilidini otomatik olarak aç"
461460
462#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:673461#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:672
463msgid "Automatically unlock this certificate whenever I'm logged in"462msgid "Automatically unlock this certificate whenever I'm logged in"
464msgstr "Her oturum açtığımda, bu sertifikanın kilidini otomatik olarak aç"463msgstr "Her oturum açtığımda, bu sertifikanın kilidini otomatik olarak aç"
465464
466#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:675465#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:674
467#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:797466#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:796
468#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1141467#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1160
469#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1289468#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1309
470msgid "Automatically unlock whenever I'm logged in"469msgid "Automatically unlock whenever I'm logged in"
471msgstr "Her oturum açtığımda, kilidi otomatik olarak aç"470msgstr "Her oturum açtığımda, kilidi otomatik olarak aç"
472471
473#. TRANSLATORS: The private key is locked472#. TRANSLATORS: The private key is locked
474#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:686473#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:685
475#, c-format474#, c-format
476msgid "An application wants access to the private key '%s', but it is locked"475msgid "An application wants access to the private key '%s', but it is locked"
477msgstr ""476msgstr ""
@@ -479,7 +478,7 @@
479"anahtarlık kilitli"478"anahtarlık kilitli"
480479
481#. TRANSLATORS: The certificate is locked480#. TRANSLATORS: The certificate is locked
482#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:689481#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:688
483#, c-format482#, c-format
484msgid "An application wants access to the certificate '%s', but it is locked"483msgid "An application wants access to the certificate '%s', but it is locked"
485msgstr ""484msgstr ""
@@ -487,7 +486,7 @@
487"kilitli"486"kilitli"
488487
489#. TRANSLATORS: The public key is locked488#. TRANSLATORS: The public key is locked
490#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:692489#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:691
491#, c-format490#, c-format
492msgid "An application wants access to the public key '%s', but it is locked"491msgid "An application wants access to the public key '%s', but it is locked"
493msgstr ""492msgstr ""
@@ -495,28 +494,28 @@
495"anahtarlık kilitli"494"anahtarlık kilitli"
496495
497#. TRANSLATORS: The object '%s' is locked496#. TRANSLATORS: The object '%s' is locked
498#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:695497#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:694
499#, c-format498#, c-format
500msgid "An application wants access to '%s', but it is locked"499msgid "An application wants access to '%s', but it is locked"
501msgstr ""500msgstr ""
502"Bilinmeyen bir uygulama '%s' anahtarlığa ulaşmak istiyor, fakat anahtarlık "501"Bilinmeyen bir uygulama '%s' anahtarlığa ulaşmak istiyor, fakat anahtarlık "
503"kilitli"502"kilitli"
504503
505#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:766504#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:765
506msgid "The unlock password was incorrect"505msgid "The unlock password was incorrect"
507msgstr "Kilit açma parolası hatalı"506msgstr "Kilit açma parolası hatalı"
508507
509#. Build up the prompt508#. Build up the prompt
510#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:787509#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:786
511msgid "Unlock certificate/key storage"510msgid "Unlock certificate/key storage"
512msgstr "Sertifika/anahtar deposu kilidini aç"511msgstr "Sertifika/anahtar deposu kilidini aç"
513512
514#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:788513#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:787
515msgid "Enter password to unlock the certificate/key storage"514msgid "Enter password to unlock the certificate/key storage"
516msgstr "Sertifika/anahtar deposu kilidini açmak için parolanızı girin"515msgstr "Sertifika/anahtar deposu kilidini açmak için parolanızı girin"
517516
518#. TRANSLATORS: The storage is locked, and needs unlocking before the application can use it.517#. TRANSLATORS: The storage is locked, and needs unlocking before the application can use it.
519#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:791518#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:790
520#, c-format519#, c-format
521msgid ""520msgid ""
522"An application wants access to the certificate/key storage '%s', but it is "521"An application wants access to the certificate/key storage '%s', but it is "
@@ -524,15 +523,15 @@
524msgstr ""523msgstr ""
525"Bir uygulama sertifika/anahtar deposu '%s' için erişim istiyor, ancak kilitli"524"Bir uygulama sertifika/anahtar deposu '%s' için erişim istiyor, ancak kilitli"
526525
527#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1132526#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1151
528msgid "New Password Required"527msgid "New Password Required"
529msgstr "Yeni Parola Gerekli"528msgstr "Yeni Parola Gerekli"
530529
531#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1133530#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1152
532msgid "New password required for secure storage"531msgid "New password required for secure storage"
533msgstr "Güvenli depolama için yeni parola gerekli"532msgstr "Güvenli depolama için yeni parola gerekli"
534533
535#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1135534#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1154
536#, c-format535#, c-format
537msgid ""536msgid ""
538"In order to prepare '%s' for storage of certificates or keys, a password is "537"In order to prepare '%s' for storage of certificates or keys, a password is "
@@ -540,40 +539,40 @@
540msgstr ""539msgstr ""
541"'%s' parola ya da anahtar depolamaya hazırlamak için bir parola gereklidir"540"'%s' parola ya da anahtar depolamaya hazırlamak için bir parola gereklidir"
542541
543#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1249542#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1269
544#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1280543#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1300
545msgid "Change Password"544msgid "Change Password"
546msgstr "Parolayı Değiştir"545msgstr "Parolayı Değiştir"
547546
548#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1250547#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1270
549msgid "Original password for secure storage"548msgid "Original password for secure storage"
550msgstr "Güvenli depolama için asıl parola"549msgstr "Güvenli depolama için asıl parola"
551550
552#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1252551#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1272
553#, c-format552#, c-format
554msgid "To change the password for '%s', the original password is required"553msgid "To change the password for '%s', the original password is required"
555msgstr "'%s' parolasını değiştirmek için, asıl parola gereklidir"554msgstr "'%s' parolasını değiştirmek için, asıl parola gereklidir"
556555
557#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1281556#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1301
558msgid "Change password for secure storage"557msgid "Change password for secure storage"
559msgstr "Güvenli depolama için parolayı değiştir"558msgstr "Güvenli depolama için parolayı değiştir"
560559
561#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1283560#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1303
562#, c-format561#, c-format
563msgid "Type a new password for '%s'"562msgid "Type a new password for '%s'"
564msgstr "'%s' için yeni bir parola yazın"563msgstr "'%s' için yeni bir parola yazın"
565564
566#: ../tool/gkr-tool.c:102565#: ../tool/gkr-tool.c:100
567#, c-format566#, c-format
568msgid "usage: gnome-keyring command [options]\n"567msgid "usage: gnome-keyring command [options]\n"
569msgstr "kullanımı: gnome-keyring komutu [seçenekler]\n"568msgstr "kullanımı: gnome-keyring komutu [seçenekler]\n"
570569
571#: ../tool/gkr-tool.c:104570#: ../tool/gkr-tool.c:102
572msgid "commands: "571msgid "commands: "
573msgstr "komutlar: "572msgstr "komutlar: "
574573
575#. Translators: keep same length as translated message "commands: "574#. Translators: keep same length as translated message "commands: "
576#: ../tool/gkr-tool.c:108575#: ../tool/gkr-tool.c:106
577msgid " "576msgid " "
578msgstr " "577msgstr " "
579578
580579
=== modified file 'po/vi.po'
--- po/vi.po 2012-09-04 09:25:05 +0000
+++ po/vi.po 2015-02-27 19:55:06 +0000
@@ -1,28 +1,32 @@
1# Vietnamese translation of GNOME Keyring.1# Vietnamese translation of GNOME Keyring.
2# Copyright © 2010 GNOME i18n Project for Vietnamese.2# Copyright © 2014 GNOME i18n Project for Vietnamese.
3# This file is distributed under the same license as the gnome-keyring package.
3# Nguyễn Thái Ngọc Duy <pclouds@gmail.com>, 2004,2008,2011-2012.4# Nguyễn Thái Ngọc Duy <pclouds@gmail.com>, 2004,2008,2011-2012.
4# Clytie Siddall <clytie@riverland.net.au>, 2005-2010.5# Clytie Siddall <clytie@riverland.net.au>, 2005-2010.
5# Nguyen Vu Hung <vuhung16plus@gmail.com>, 2011.6# Nguyen Vu Hung <vuhung16plus@gmail.com>, 2011.
7# Trần Ngọc Quân <vnwildman@gmail.com>, 2014.
8#
6msgid ""9msgid ""
7msgstr ""10msgstr ""
8"Project-Id-Version: gnome-keyring 2.26.3\n"11"Project-Id-Version: gnome-keyring master\n"
9"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"12"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
10"keyring&keywords=I18N+L10N&component=general\n"13"keyring&keywords=I18N+L10N&component=general\n"
11"POT-Creation-Date: 2012-03-08 19:47+0000\n"14"POT-Creation-Date: 2014-11-20 20:13+0000\n"
12"PO-Revision-Date: 2012-09-01 17:12+0700\n"15"PO-Revision-Date: 2014-11-21 14:15+0700\n"
13"Last-Translator: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n"16"Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n"
14"Language-Team: Vietnamese <vi-VN@googlegroups.com>\n"17"Language-Team: Vietnamese <gnome-vi-list@gnome.org>\n"
18"Language: vi\n"
15"MIME-Version: 1.0\n"19"MIME-Version: 1.0\n"
16"Content-Type: text/plain; charset=UTF-8\n"20"Content-Type: text/plain; charset=UTF-8\n"
17"Content-Transfer-Encoding: 8bit\n"21"Content-Transfer-Encoding: 8bit\n"
18"Plural-Forms: nplurals=1; plural=0;\n"22"Plural-Forms: nplurals=1; plural=0;\n"
19"X-Generator: LocFactoryEditor 1.8\n"23"X-Generator: Poedit 1.5.5\n"
2024
21#. TRANSLATORS: This is the label for an keyring created without a label25#. TRANSLATORS: This is the label for an keyring created without a label
22#: ../daemon/dbus/gkd-secret-change.c:8526#: ../daemon/dbus/gkd-secret-change.c:85
23#: ../daemon/dbus/gkd-secret-change.c:12127#: ../daemon/dbus/gkd-secret-change.c:121
24#: ../daemon/dbus/gkd-secret-create.c:7928#: ../daemon/dbus/gkd-secret-create.c:78
25#: ../pkcs11/secret-store/gkm-secret-collection.c:32529#: ../pkcs11/secret-store/gkm-secret-collection.c:324
26#: ../pkcs11/wrap-layer/gkm-wrap-login.c:34530#: ../pkcs11/wrap-layer/gkm-wrap-login.c:345
27#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:75331#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:753
28msgid "Unnamed"32msgid "Unnamed"
@@ -30,35 +34,31 @@
3034
31#: ../daemon/dbus/gkd-secret-change.c:9035#: ../daemon/dbus/gkd-secret-change.c:90
32#, c-format36#, c-format
33#| msgid "Choose a new password for the '%s' keyring"
34msgid "Enter the old password for the '%s' keyring"37msgid "Enter the old password for the '%s' keyring"
35msgstr "Nhập mật khẩu cũ cho vòng khóa '%s'"38msgstr "Nhập mật khẩu cũ cho chùm chìa khóa “%s”"
3639
37#: ../daemon/dbus/gkd-secret-change.c:9440#: ../daemon/dbus/gkd-secret-change.c:94
38#, c-format41#, c-format
39#| msgid ""
40#| "An application wants to change the password for the '%s' keyring. Choose "
41#| "the new password you want to use for it."
42msgid ""42msgid ""
43"An application wants to change the password for the '%s' keyring. Enter the "43"An application wants to change the password for the '%s' keyring. Enter the "
44"old password for it."44"old password for it."
45msgstr ""45msgstr ""
46"Một ứng dụng muốn thay đổi mật khẫu cho vòng khoá '%s'. Nhập mật khẩu cũ của "46"Một ứng dụng muốn thay đổi mật khẩu cho chùm chìa khóa “%s”. Nhập mật khẩu "
47"nó."47"cũ của nó."
4848
49#: ../daemon/dbus/gkd-secret-change.c:10049#: ../daemon/dbus/gkd-secret-change.c:100
50#: ../daemon/dbus/gkd-secret-change.c:13650#: ../daemon/dbus/gkd-secret-change.c:136
51#: ../daemon/dbus/gkd-secret-change.c:14651#: ../daemon/dbus/gkd-secret-change.c:147
52#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:114352#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1163
53#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:125553#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1276
54#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:129054#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1311
55msgid "Continue"55msgid "Continue"
56msgstr "Tiếp tục"56msgstr "Tiếp tục"
5757
58#: ../daemon/dbus/gkd-secret-change.c:12658#: ../daemon/dbus/gkd-secret-change.c:126
59#, c-format59#, c-format
60msgid "Choose a new password for the '%s' keyring"60msgid "Choose a new password for the '%s' keyring"
61msgstr "Hãy chọn một mật khẩu mới cho vòng khóa '%s'"61msgstr "Hãy chọn một mật khẩu mới cho chùm chìa khóa “%s”"
6262
63#: ../daemon/dbus/gkd-secret-change.c:13063#: ../daemon/dbus/gkd-secret-change.c:130
64#, c-format64#, c-format
@@ -66,48 +66,48 @@
66"An application wants to change the password for the '%s' keyring. Choose the "66"An application wants to change the password for the '%s' keyring. Choose the "
67"new password you want to use for it."67"new password you want to use for it."
68msgstr ""68msgstr ""
69"Một ứng dụng muốn thay đổi mật khẫu cho vòng khoá '%s'. Hãy chọn mật khẩu "69"Một ứng dụng muốn thay đổi mật khẫu cho chùm chìa khóa “%s”. Hãy chọn mật "
70"cần sử dụng với nó."70"khẩu cần sử dụng với nó."
7171
72#: ../daemon/dbus/gkd-secret-change.c:14272#: ../daemon/dbus/gkd-secret-change.c:143
73#: ../daemon/dbus/gkd-secret-create.c:9573#: ../daemon/dbus/gkd-secret-create.c:94
74msgid "Store passwords unencrypted?"74msgid "Store passwords unencrypted?"
75msgstr "Lưu mật khẩu không mật mã không?"75msgstr "Lưu mật khẩu không mã hóa không?"
7676
77#: ../daemon/dbus/gkd-secret-change.c:14477#: ../daemon/dbus/gkd-secret-change.c:145
78#: ../daemon/dbus/gkd-secret-create.c:9778#: ../daemon/dbus/gkd-secret-create.c:96
79msgid ""79msgid ""
80"By choosing to use a blank password, your stored passwords will not be "80"By choosing to use a blank password, your stored passwords will not be "
81"safely encrypted. They will be accessible by anyone with access to your "81"safely encrypted. They will be accessible by anyone with access to your "
82"files."82"files."
83msgstr ""83msgstr ""
84"Dùng một mật khẩu trắng thì mật khẩu đã lưu sẽ không thể được mã hoá an "84"Dùng một mật khẩu trắng thì mật khẩu đã lưu sẽ không được mã hoá an toàn. "
85"toàn. Mọi người đều có thể truy cập vào tập tin của bạn."85"Mọi người đều có thể truy cập vào tập tin của bạn."
8686
87#: ../daemon/dbus/gkd-secret-change.c:15287#: ../daemon/dbus/gkd-secret-change.c:153
88msgid "The original password was incorrect"88msgid "The original password was incorrect"
89msgstr "Bạn đã gõ sai mật khẩu gốc"89msgstr "Bạn đã gõ sai mật khẩu gốc"
9090
91#: ../daemon/dbus/gkd-secret-change.c:35291#: ../daemon/dbus/gkd-secret-change.c:354
92msgid "Change Keyring Password"92msgid "Change Keyring Password"
93msgstr "Đổi mật khẩu vòng khóa"93msgstr "Đổi mật khẩu chùm chìa khóa"
9494
95#: ../daemon/dbus/gkd-secret-create.c:8195#: ../daemon/dbus/gkd-secret-create.c:80
96#, c-format96#, c-format
97msgid ""97msgid ""
98"An application wants to create a new keyring called '%s'. Choose the "98"An application wants to create a new keyring called '%s'. Choose the "
99"password you want to use for it."99"password you want to use for it."
100msgstr ""100msgstr ""
101"Một ứng dụng muốn tạo một vòng khóa mới tên '%s'. Hãy chọn mật khẩu cần sử "101"Một ứng dụng muốn tạo một chùm chìa khóa mới tên “%s”. Hãy chọn mật khẩu mà "
102"dụng với nó."102"bạn muốn áp dụng cho nó."
103103
104#: ../daemon/dbus/gkd-secret-create.c:85104#: ../daemon/dbus/gkd-secret-create.c:84
105msgid "Choose password for new keyring"105msgid "Choose password for new keyring"
106msgstr "Hãy chọn mật khẩu cho vòng khóa mới"106msgstr "Hãy chọn mật khẩu cho chùm chìa khóa mới"
107107
108#: ../daemon/dbus/gkd-secret-create.c:308108#: ../daemon/dbus/gkd-secret-create.c:311
109msgid "New Keyring Password"109msgid "New Keyring Password"
110msgstr "Mật khẩu vòng khóa mới"110msgstr "Mật khẩu chùm chìa khóa mới"
111111
112#: ../daemon/gnome-keyring-gpg.desktop.in.in.h:1112#: ../daemon/gnome-keyring-gpg.desktop.in.in.h:1
113msgid "GPG Password Agent"113msgid "GPG Password Agent"
@@ -115,47 +115,42 @@
115115
116#: ../daemon/gnome-keyring-gpg.desktop.in.in.h:2116#: ../daemon/gnome-keyring-gpg.desktop.in.in.h:2
117msgid "GNOME Keyring: GPG Agent"117msgid "GNOME Keyring: GPG Agent"
118msgstr "Vòng Khoá GNOME: GPG Agent"118msgstr "Chùm chìa khóa GNOME: Đại diện GPG"
119119
120#: ../daemon/gnome-keyring-pkcs11.desktop.in.in.h:1120#: ../daemon/gnome-keyring-pkcs11.desktop.in.in.h:1
121msgid "Certificate and Key Storage"121msgid "Certificate and Key Storage"
122msgstr "Lưu trữ Chứng nhận và Khoá"122msgstr "Lưu trữ Chứng nhận và khóa"
123123
124#: ../daemon/gnome-keyring-pkcs11.desktop.in.in.h:2124#: ../daemon/gnome-keyring-pkcs11.desktop.in.in.h:2
125msgid "GNOME Keyring: PKCS#11 Component"125msgid "GNOME Keyring: PKCS#11 Component"
126msgstr "Vòng Khoá GNOME: thành phần PKCS#11"126msgstr "Chùm chìa khóa GNOME: thành phần PKCS#11"
127127
128#: ../daemon/gnome-keyring-secrets.desktop.in.in.h:1128#: ../daemon/gnome-keyring-secrets.desktop.in.in.h:1
129msgid "Secret Storage Service"129msgid "Secret Storage Service"
130msgstr "Dịch vụ lưu trữ mật"130msgstr "Dịch vụ lưu trữ bảo mật"
131131
132#: ../daemon/gnome-keyring-secrets.desktop.in.in.h:2132#: ../daemon/gnome-keyring-secrets.desktop.in.in.h:2
133msgid "GNOME Keyring: Secret Service"133msgid "GNOME Keyring: Secret Service"
134msgstr "Vòng Khoá GNOME: dịch vụ mật"134msgstr "Chùm chìa khóa GNOME: dịch vụ bảo mật"
135135
136#: ../daemon/gnome-keyring-ssh.desktop.in.in.h:1136#: ../daemon/gnome-keyring-ssh.desktop.in.in.h:1
137msgid "SSH Key Agent"137msgid "SSH Key Agent"
138msgstr "Tác nhân khoá SSH"138msgstr "Đại diện khóa SSH"
139139
140#: ../daemon/gnome-keyring-ssh.desktop.in.in.h:2140#: ../daemon/gnome-keyring-ssh.desktop.in.in.h:2
141msgid "GNOME Keyring: SSH Agent"141msgid "GNOME Keyring: SSH Agent"
142msgstr "Vòng Khoá GNOME: SSH Agent"142msgstr "Chùm chìa khóa GNOME: Đại diện SSH"
143143
144#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:106144#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:82
145msgid "Unknown"145msgid "Unknown"
146msgstr "Không biết"146msgstr "Không biết"
147147
148#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:203148#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:144
149#, c-format149#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:145
150msgid "PGP Key: %s"
151msgstr "Khóa PGP: %s"
152
153#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:360
154#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:361
155msgid "Enter Passphrase"150msgid "Enter Passphrase"
156msgstr "Nhập mật mã"151msgstr "Nhập mật mã"
157152
158#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:365153#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:149
159#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:602154#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:602
160#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:630155#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:630
161#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:645156#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:645
@@ -163,32 +158,36 @@
163#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:767158#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:767
164#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:799159#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:799
165msgid "Unlock"160msgid "Unlock"
166msgstr "Mở khoá"161msgstr "Mở khóa"
167162
168#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:394163#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:162
169#| msgid "Automatically unlock this keyring whenever I'm logged in"
170msgid "Automatically unlock this key, whenever I'm logged in"164msgid "Automatically unlock this key, whenever I'm logged in"
171msgstr "Tự động gỡ khoá khoá này khi nào tôi đã đăng nhập"165msgstr "Tự động gỡ khóa khóa này khi nào tôi đã đăng nhập"
166
167#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:225
168#, c-format
169msgid "PGP Key: %s"
170msgstr "Khóa PGP: %s"
172171
173#. TRANSLATORS: This is the display label for the login keyring172#. TRANSLATORS: This is the display label for the login keyring
174#: ../daemon/login/gkd-login.c:145173#: ../daemon/login/gkd-login.c:158
175msgid "Login"174msgid "Login"
176msgstr "Đăng nhập"175msgstr "Đăng nhập"
177176
178#: ../egg/dotlock.c:668177#: ../egg/dotlock.c:668
179#, c-format178#, c-format
180msgid "failed to create temporary file `%s': %s\n"179msgid "failed to create temporary file `%s': %s\n"
181msgstr "lỗi tạo tập tin tạm `%s': %s\n"180msgstr "gặp lỗi khi tạo tập tin tạm “%s”: %s\n"
182181
183#: ../egg/dotlock.c:718182#: ../egg/dotlock.c:718
184#, c-format183#, c-format
185msgid "error writing to `%s': %s\n"184msgid "error writing to `%s': %s\n"
186msgstr "lỗi ghi vào `%s': %s\n"185msgstr "gặp lỗi khi ghi vào “%s”: %s\n"
187186
188#: ../egg/dotlock.c:782187#: ../egg/dotlock.c:782
189#, c-format188#, c-format
190msgid "can't create `%s': %s\n"189msgid "can't create `%s': %s\n"
191msgstr "lỗi tạo `%s': %s\n"190msgstr "Không thể tạo “%s”: %s\n"
192191
193#. Note: It is unlikley that we get a race here unless a pid is192#. Note: It is unlikley that we get a race here unless a pid is
194#. reused too fast or a new process with the same pid as the one193#. reused too fast or a new process with the same pid as the one
@@ -196,201 +195,203 @@
196#: ../egg/dotlock.c:1048195#: ../egg/dotlock.c:1048
197#, c-format196#, c-format
198msgid "removing stale lockfile (created by %d)\n"197msgid "removing stale lockfile (created by %d)\n"
199msgstr "bỏ tập tin khoá không còn dùng (tạo bởi %d)\n"198msgstr "xóa bỏ tập tin khóa đã hỏng (được tạo bởi %d)\n"
200199
201#: ../egg/dotlock.c:1084200#: ../egg/dotlock.c:1084
202#, c-format201#, c-format
203msgid "waiting for lock (held by %d%s) %s...\n"202msgid "waiting for lock (held by %d%s) %s...\n"
204msgstr "chờ khoá (giữ bởi %d%s) %s...\n"203msgstr "chờ khóa (được giữ bởi %d%s) %s...\n"
205204
205# http://vi.wikipedia.org/wiki/Deadlock
206# deadlock (Khóa chết) Là trạng thái xảy ra trong môi trường đa nhiệm (Muti-Threading) khi hai hoặc nhiều tiến trình đi vào vòng lặp chờ tài nguyên mãi mãi.
206#: ../egg/dotlock.c:1085207#: ../egg/dotlock.c:1085
207msgid "(deadlock?) "208msgid "(deadlock?) "
208msgstr ""209msgstr "(khóa chết?)"
209210
210#: ../egg/dotlock.c:1124211#: ../egg/dotlock.c:1124
211#, c-format212#, c-format
212msgid "lock `%s' not made: %s\n"213msgid "lock `%s' not made: %s\n"
213msgstr "khoá `%s' chưa được tạo: %s\n"214msgstr "khóa “%s” chưa được tạo: %s\n"
214215
215#: ../egg/dotlock.c:1150216#: ../egg/dotlock.c:1150
216#, c-format217#, c-format
217msgid "waiting for lock %s...\n"218msgid "waiting for lock %s...\n"
218msgstr "chờ khoá %s...\n"219msgstr "chờ khóa %s...\n"
219220
220#: ../egg/egg-oid.c:41221#: ../egg/egg-oid.c:40
221msgid "Domain Component"222msgid "Domain Component"
222msgstr "Thành phần Miền"223msgstr "Thành phần tên miền"
223224
224#: ../egg/egg-oid.c:43225#: ../egg/egg-oid.c:42
225msgid "User ID"226msgid "User ID"
226msgstr "Mã số người dùng"227msgstr "Mã số người dùng"
227228
228#: ../egg/egg-oid.c:46229#: ../egg/egg-oid.c:45
229msgid "Email Address"230msgid "Email Address"
230msgstr "Thư điện tử"231msgstr "Thư điện tử"
231232
232#: ../egg/egg-oid.c:54233#: ../egg/egg-oid.c:53
233msgid "Date of Birth"234msgid "Date of Birth"
234msgstr "Ngày sinh"235msgstr "Ngày sinh"
235236
236#: ../egg/egg-oid.c:56237#: ../egg/egg-oid.c:55
237msgid "Place of Birth"238msgid "Place of Birth"
238msgstr "Nơi sinh"239msgstr "Nơi sinh"
239240
240#: ../egg/egg-oid.c:58241#: ../egg/egg-oid.c:57
241msgid "Gender"242msgid "Gender"
242msgstr "Giới tính"243msgstr "Giới tính"
243244
244#: ../egg/egg-oid.c:60245#: ../egg/egg-oid.c:59
245msgid "Country of Citizenship"246msgid "Country of Citizenship"
246msgstr "Quốc gia cấp công dân"247msgstr "Quốc gia cấp công dân"
247248
248#: ../egg/egg-oid.c:62249#: ../egg/egg-oid.c:61
249msgid "Country of Residence"250msgid "Country of Residence"
250msgstr "Quốc gia ở"251msgstr "Quốc gia ở"
251252
252#: ../egg/egg-oid.c:65253#: ../egg/egg-oid.c:64
253msgid "Common Name"254msgid "Common Name"
254msgstr "Tên chung"255msgstr "Tên chung"
255256
256#: ../egg/egg-oid.c:67257#: ../egg/egg-oid.c:66
257msgid "Surname"258msgid "Surname"
258msgstr "Họ"259msgstr "Họ"
259260
260#: ../egg/egg-oid.c:69261#: ../egg/egg-oid.c:68
261msgid "Serial Number"262msgid "Serial Number"
262msgstr "Số thứ tự"263msgstr "Số thứ tự"
263264
264#: ../egg/egg-oid.c:71265#: ../egg/egg-oid.c:70
265msgid "Country"266msgid "Country"
266msgstr "Quốc gia"267msgstr "Quốc gia"
267268
268#: ../egg/egg-oid.c:73269#: ../egg/egg-oid.c:72
269msgid "Locality"270msgid "Locality"
270msgstr "Vùng"271msgstr "Vùng"
271272
272#: ../egg/egg-oid.c:75273#: ../egg/egg-oid.c:74
273msgid "State"274msgid "State"
274msgstr "Tỉnh"275msgstr "Tỉnh"
275276
276#: ../egg/egg-oid.c:77277#: ../egg/egg-oid.c:76
277msgid "Street"278msgid "Street"
278msgstr "Đường"279msgstr "Đường"
279280
280#: ../egg/egg-oid.c:79281#: ../egg/egg-oid.c:78
281msgid "Organization"282msgid "Organization"
282msgstr "Tổ chức"283msgstr "Tổ chức"
283284
284#: ../egg/egg-oid.c:81285#: ../egg/egg-oid.c:80
285msgid "Organizational Unit"286msgid "Organizational Unit"
286msgstr "Đơn vị tổ chức"287msgstr "Đơn vị tổ chức"
287288
288#: ../egg/egg-oid.c:83289#: ../egg/egg-oid.c:82
289msgid "Title"290msgid "Title"
290msgstr "Tuổi tác"291msgstr "Tuổi tác"
291292
292#: ../egg/egg-oid.c:85293#: ../egg/egg-oid.c:84
293msgid "Telephone Number"294msgid "Telephone Number"
294msgstr "Số điện thoại"295msgstr "Số điện thoại"
295296
296#: ../egg/egg-oid.c:87297#: ../egg/egg-oid.c:86
297msgid "Given Name"298msgid "Given Name"
298msgstr "Tên hay gọi"299msgstr "Tên hay gọi"
299300
300#: ../egg/egg-oid.c:89301#: ../egg/egg-oid.c:88
301msgid "Initials"302msgid "Initials"
302msgstr "Tên viết tắt"303msgstr "Tên viết tắt"
303304
304#: ../egg/egg-oid.c:91305#: ../egg/egg-oid.c:90
305msgid "Generation Qualifier"306msgid "Generation Qualifier"
306msgstr "Thế hệ dè dặt"307msgstr "Thế hệ dè dặt"
307308
308#: ../egg/egg-oid.c:93309#: ../egg/egg-oid.c:92
309msgid "DN Qualifier"310msgid "DN Qualifier"
310msgstr "Tên miền dè dặt"311msgstr "Tên miền dè dặt"
311312
312#: ../egg/egg-oid.c:95313#: ../egg/egg-oid.c:94
313msgid "Pseudonym"314msgid "Pseudonym"
314msgstr "Biệt hiệu"315msgstr "Biệt hiệu"
315316
316#: ../egg/egg-oid.c:98317#: ../egg/egg-oid.c:97
317msgid "RSA"318msgid "RSA"
318msgstr "RSA"319msgstr "RSA"
319320
320#: ../egg/egg-oid.c:99321#: ../egg/egg-oid.c:98
321msgid "MD2 with RSA"322msgid "MD2 with RSA"
322msgstr "MD2 với mã hoá RSA"323msgstr "MD2 với mã hoá RSA"
323324
324#: ../egg/egg-oid.c:100325#: ../egg/egg-oid.c:99
325msgid "MD5 with RSA"326msgid "MD5 with RSA"
326msgstr "MD5 với mã hoá RSA"327msgstr "MD5 với mã hoá RSA"
327328
328#: ../egg/egg-oid.c:101329#: ../egg/egg-oid.c:100
329msgid "SHA1 with RSA"330msgid "SHA1 with RSA"
330msgstr "SHA1 với mã hoá RSA"331msgstr "SHA1 với mã hoá RSA"
331332
332#: ../egg/egg-oid.c:103333#: ../egg/egg-oid.c:102
333msgid "DSA"334msgid "DSA"
334msgstr "DSA"335msgstr "DSA"
335336
336#: ../egg/egg-oid.c:104337#: ../egg/egg-oid.c:103
337msgid "SHA1 with DSA"338msgid "SHA1 with DSA"
338msgstr "SHA1 với mã hoá DSA"339msgstr "SHA1 với mã hoá DSA"
339340
340#. Extended Key Usages341#. Extended Key Usages
341#: ../egg/egg-oid.c:107342#: ../egg/egg-oid.c:106
342msgid "Server Authentication"343msgid "Server Authentication"
343msgstr "Xác thực máy chủ"344msgstr "Xác thực máy chủ"
344345
345#: ../egg/egg-oid.c:108346#: ../egg/egg-oid.c:107
346msgid "Client Authentication"347msgid "Client Authentication"
347msgstr "Xác thực máy khách"348msgstr "Xác thực máy khách"
348349
349#: ../egg/egg-oid.c:109350#: ../egg/egg-oid.c:108
350msgid "Code Signing"351msgid "Code Signing"
351msgstr "Ký mã"352msgstr "Ký mã"
352353
353#: ../egg/egg-oid.c:110354#: ../egg/egg-oid.c:109
354msgid "Email Protection"355msgid "Email Protection"
355msgstr "Bảo vệ thư"356msgstr "Bảo vệ thư"
356357
357#: ../egg/egg-oid.c:111358#: ../egg/egg-oid.c:110
358msgid "Time Stamping"359msgid "Time Stamping"
359msgstr "Tem thời gian"360msgstr "Dấu vết thời gian"
360361
361#: ../egg/egg-spawn.c:273362#: ../egg/egg-spawn.c:272
362#, c-format363#, c-format
363msgid "Unexpected error in select() reading data from a child process (%s)"364msgid "Unexpected error in select() reading data from a child process (%s)"
364msgstr ""365msgstr ""
365"Gặp lỗi bất thường trong « select() » khi đọc dữ liệu từ một tiến trình con "366"Gặp lỗi bất thường trong “select()” khi đọc dữ liệu từ một tiến trình con "
366"(%s)"367"(%s)"
367368
368#: ../egg/egg-spawn.c:320369#: ../egg/egg-spawn.c:319
369#, c-format370#, c-format
370msgid "Unexpected error in waitpid() (%s)"371msgid "Unexpected error in waitpid() (%s)"
371msgstr "Gặp lỗi bất thường trong « waitpid() » (%s)"372msgstr "Gặp lỗi bất thường trong “waitpid()” (%s)"
372373
373#: ../pkcs11/gkm/gkm-certificate.c:572374#: ../pkcs11/gkm/gkm-certificate.c:580
374msgid "Unnamed Certificate"375msgid "Unnamed Certificate"
375msgstr "Chứng nhận không tên"376msgstr "Chứng nhận không tên"
376377
377#: ../pkcs11/ssh-store/gkm-ssh-private-key.c:339378#: ../pkcs11/ssh-store/gkm-ssh-private-key.c:341
378msgid "Couldn't parse public SSH key"379msgid "Couldn't parse public SSH key"
379msgstr "Không thể phân tích cú pháp của khoá SSH công khai"380msgstr "Không thể phân tích cú pháp của khóa SSH công"
380381
381#. Get the label ready382#. Get the label ready
382#: ../pkcs11/wrap-layer/gkm-wrap-login.c:345383#: ../pkcs11/wrap-layer/gkm-wrap-login.c:345
383#, c-format384#, c-format
384msgid "Unlock password for: %s"385msgid "Unlock password for: %s"
385msgstr "Mật khẩu gỡ khoá cho: %s"386msgstr "Mật khẩu gỡ khóa cho: %s"
386387
387#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:590388#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:590
388msgid "Unlock Login Keyring"389msgid "Unlock Login Keyring"
389msgstr "Gỡ khoá vòng khoá đăng nhập"390msgstr "Gỡ khóa chùm chìa khóa đăng nhập"
390391
391#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:592392#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:592
392msgid "Enter password to unlock your login keyring"393msgid "Enter password to unlock your login keyring"
393msgstr "Nhập mật khẩu để gỡ khoá vòng khoá đăng nhập"394msgstr "Nhập mật khẩu để gỡ khóa chùm chìa khóa đăng nhập"
394395
395#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:596396#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:596
396msgid ""397msgid ""
@@ -398,35 +399,36 @@
398"your login keyring."399"your login keyring."
399msgstr ""400msgstr ""
400"Bạn đang sử dụng một mật khẩu để đăng nhập vào máy tính mà không còn tương "401"Bạn đang sử dụng một mật khẩu để đăng nhập vào máy tính mà không còn tương "
401"ứng với mật khẩu của vòng khoá đăng nhập."402"ứng với mật khẩu của chùm chìa khóa đăng nhập."
402403
403#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:598404#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:598
404msgid ""405msgid ""
405"The login keyring did not get unlocked when you logged into your computer."406"The login keyring did not get unlocked when you logged into your computer."
406msgstr ""407msgstr ""
407"Vòng khoá đăng nhập đã không được gỡ khoá khi bạn đăng nhập vào máy tính này."408"Chùm chìa khóa đăng nhập đã không được gỡ khóa khi bạn đăng nhập vào máy "
409"tính này."
408410
409#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:616411#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:616
410msgid "Unlock Keyring"412msgid "Unlock Keyring"
411msgstr "Mở vòng"413msgstr "Mở khóa chùm chìa khóa"
412414
413#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:618415#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:618
414#, c-format416#, c-format
415msgid "Enter password for keyring '%s' to unlock"417msgid "Enter password for keyring '%s' to unlock"
416msgstr "Hãy nhập mật khẩu cho vòng khóa '%s' để mở vòng khóa"418msgstr "Hãy nhập mật khẩu cho chùm chìa khóa “%s” để mở chùm chìa khóa"
417419
418#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:622420#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:622
419#, c-format421#, c-format
420msgid "An application wants access to the keyring '%s', but it is locked"422msgid "An application wants access to the keyring '%s', but it is locked"
421msgstr "Một ứng dụng muốn truy cập đến vòng khóa '%s', còn nó bị khoá"423msgstr "Một ứng dụng muốn dùng chùm chìa khóa “%s”, nhưng nó đang bị khóa"
422424
423#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:628425#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:628
424msgid "Automatically unlock this keyring whenever I'm logged in"426msgid "Automatically unlock this keyring whenever I'm logged in"
425msgstr "Tự động gỡ khoá vòng khoá này khi nào tôi đã đăng nhập"427msgstr "Tự động gỡ khóa chùm chìa khóa này khi nào tôi đã đăng nhập"
426428
427#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:639429#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:639
428msgid "Unlock private key"430msgid "Unlock private key"
429msgstr "Mở khoá cá nhân"431msgstr "Mở khóa riêng"
430432
431#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:641433#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:641
432msgid "Unlock certificate"434msgid "Unlock certificate"
@@ -434,11 +436,11 @@
434436
435#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:643437#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:643
436msgid "Unlock public key"438msgid "Unlock public key"
437msgstr "Mở khoá công khai"439msgstr "Mở khóa công khai"
438440
439#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:654441#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:654
440msgid "Enter password to unlock the private key"442msgid "Enter password to unlock the private key"
441msgstr "Gõ mật khẩu để mở khoá cá nhân"443msgstr "Gõ mật khẩu để mở khóa riêng"
442444
443#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:656445#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:656
444msgid "Enter password to unlock the certificate"446msgid "Enter password to unlock the certificate"
@@ -446,66 +448,63 @@
446448
447#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:658449#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:658
448msgid "Enter password to unlock the public key"450msgid "Enter password to unlock the public key"
449msgstr "Gõ mật khẩu để mở khoá công khai"451msgstr "Gõ mật khẩu để mở khóa công khai"
450452
451#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:660453#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:660
452msgid "Enter password to unlock"454msgid "Enter password to unlock"
453msgstr "Gõ mật khẩu để gỡ khoá"455msgstr "Gõ mật khẩu để gỡ khóa"
454456
455#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:670457#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:670
456#| msgid "Automatically unlock this keyring whenever I'm logged in"
457msgid "Automatically unlock this key whenever I'm logged in"458msgid "Automatically unlock this key whenever I'm logged in"
458msgstr "Tự động gỡ khoá khoá này khi nào tôi đã đăng nhập"459msgstr "Tự động gỡ khóa khóa này khi nào tôi đã đăng nhập"
459460
460#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:672461#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:672
461#| msgid "Automatically unlock this keyring whenever I'm logged in"
462msgid "Automatically unlock this certificate whenever I'm logged in"462msgid "Automatically unlock this certificate whenever I'm logged in"
463msgstr "Tự động gỡ khoá chứng nhận này khi nào tôi đã đăng nhập"463msgstr "Tự động gỡ khóa chứng nhận này khi nào tôi đã đăng nhập"
464464
465#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:674465#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:674
466#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:796466#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:796
467#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1140467#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1160
468#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1288468#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1309
469#| msgid "Automatically unlock this keyring whenever I'm logged in"
470msgid "Automatically unlock whenever I'm logged in"469msgid "Automatically unlock whenever I'm logged in"
471msgstr "Tự động mở khoá khi tôi đăng nhập"470msgstr "Tự động mở khóa khi tôi đăng nhập"
472471
473#. TRANSLATORS: The private key is locked472#. TRANSLATORS: The private key is locked
474#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:685473#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:685
475#, c-format474#, c-format
476msgid "An application wants access to the private key '%s', but it is locked"475msgid "An application wants access to the private key '%s', but it is locked"
477msgstr "Ứng dụng muốn truy cập đến khoá cá nhân %s, nhưng nó đang bị khóa"476msgstr "Ứng dụng muốn dùng khóa riêng “%s”, nhưng nó đang bị khóa"
478477
479#. TRANSLATORS: The certificate is locked478#. TRANSLATORS: The certificate is locked
480#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:688479#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:688
481#, c-format480#, c-format
482msgid "An application wants access to the certificate '%s', but it is locked"481msgid "An application wants access to the certificate '%s', but it is locked"
483msgstr "Ứng dụng muốn truy cập đến chứng nhận %s, nhưng nó đang bị khóa"482msgstr "Ứng dụng muốn dùng chứng nhận “%s”, nhưng nó đang bị khóa"
484483
485#. TRANSLATORS: The public key is locked484#. TRANSLATORS: The public key is locked
486#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:691485#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:691
487#, c-format486#, c-format
488msgid "An application wants access to the public key '%s', but it is locked"487msgid "An application wants access to the public key '%s', but it is locked"
489msgstr "Ứng dụng muốn truy cập đến khoá công khai %s, nhưng nó đang bị khóa"488msgstr "Ứng dụng muốn dùng khóa công khai “%s”, nhưng nó đang bị khóa"
490489
491#. TRANSLATORS: The object '%s' is locked490#. TRANSLATORS: The object '%s' is locked
492#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:694491#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:694
493#, c-format492#, c-format
494msgid "An application wants access to '%s', but it is locked"493msgid "An application wants access to '%s', but it is locked"
495msgstr "Ứng dụng muốn truy cập đến '%s', nhưng nó bị khóa"494msgstr "Ứng dụng muốn dùng “%s”, nhưng nó đang bị khóa"
496495
497#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:765496#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:765
498msgid "The unlock password was incorrect"497msgid "The unlock password was incorrect"
499msgstr "Bạn đã gõ sai mật khẩu gỡ khoá"498msgstr "Bạn đã gõ sai mật khẩu gỡ khóa"
500499
501#. Build up the prompt500#. Build up the prompt
502#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:786501#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:786
503msgid "Unlock certificate/key storage"502msgid "Unlock certificate/key storage"
504msgstr "Mở khoá lưu trữ chứng nhận/khoá"503msgstr "Mở khóa lưu trữ chứng nhận/khóa"
505504
506#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:787505#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:787
507msgid "Enter password to unlock the certificate/key storage"506msgid "Enter password to unlock the certificate/key storage"
508msgstr "Nhập mật khẩu để mở khoá kho lưu chứng nhận/khoá"507msgstr "Nhập mật khẩu để mở khóa kho lưu chứng nhận/khóa"
509508
510#. TRANSLATORS: The storage is locked, and needs unlocking before the application can use it.509#. TRANSLATORS: The storage is locked, and needs unlocking before the application can use it.
511#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:790510#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:790
@@ -514,65 +513,60 @@
514"An application wants access to the certificate/key storage '%s', but it is "513"An application wants access to the certificate/key storage '%s', but it is "
515"locked"514"locked"
516msgstr ""515msgstr ""
517"Một ứng dụng muốn truy cập đến kho lưu chứng nhận/khoá '%s', nhưng nó vẫn bị "516"Một ứng dụng muốn dùng kho lưu chứng nhận/khóa “%s”, nhưng nó vẫn đang bị "
518"khóa"517"khóa"
519518
520#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1131519#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1151
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches

to all changes: