Merge lp:~noskcaj/ubuntu/vivid/gnome-keyring/3.15.90 into lp:ubuntu/vivid/gnome-keyring
- Vivid (15.04)
- 3.15.90
- Merge into vivid
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 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Ubuntu branches | Pending | ||
Review via email: mp+251325@code.launchpad.net |
Commit message
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 : | # |
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
1 | === modified file '.pc/bgz_exit_on_bus_close.patch/daemon/dbus/gkd-dbus.c' |
2 | --- .pc/bgz_exit_on_bus_close.patch/daemon/dbus/gkd-dbus.c 2014-12-06 18:47:09 +0000 |
3 | +++ .pc/bgz_exit_on_bus_close.patch/daemon/dbus/gkd-dbus.c 2015-02-27 19:55:06 +0000 |
4 | @@ -103,7 +103,6 @@ |
5 | |
6 | const gchar **env; |
7 | DBusMessageIter items, entry; |
8 | - gchar **parts; |
9 | |
10 | env = gkd_util_get_environment (); |
11 | g_return_val_if_fail (env, DBUS_HANDLER_RESULT_NOT_YET_HANDLED); |
12 | @@ -114,13 +113,17 @@ |
13 | if (!dbus_message_iter_open_container (&args, DBUS_TYPE_ARRAY, "{ss}", &items)) |
14 | g_return_val_if_reached (DBUS_HANDLER_RESULT_NEED_MEMORY); |
15 | while (*env) { |
16 | + gchar **parts; |
17 | parts = g_strsplit (*env, "=", 2); |
18 | g_return_val_if_fail (parts && parts[0] && parts[1], DBUS_HANDLER_RESULT_NOT_YET_HANDLED); |
19 | if (!dbus_message_iter_open_container (&items, DBUS_TYPE_DICT_ENTRY, NULL, &entry) || |
20 | !dbus_message_iter_append_basic (&entry, DBUS_TYPE_STRING, &parts[0]) || |
21 | !dbus_message_iter_append_basic (&entry, DBUS_TYPE_STRING, &parts[1]) || |
22 | - !dbus_message_iter_close_container (&items, &entry)) |
23 | + !dbus_message_iter_close_container (&items, &entry)) { |
24 | + g_strfreev (parts); |
25 | g_return_val_if_reached (DBUS_HANDLER_RESULT_NEED_MEMORY); |
26 | + } |
27 | + g_strfreev (parts); |
28 | ++env; |
29 | } |
30 | if (!dbus_message_iter_close_container (&args, &items)) |
31 | |
32 | === modified file 'ChangeLog' |
33 | --- ChangeLog 2014-12-06 18:47:09 +0000 |
34 | +++ ChangeLog 2015-02-27 19:55:06 +0000 |
35 | @@ -1,5 +1,919 @@ |
36 | # Generate automatically. Do not edit. |
37 | |
38 | +commit bf38a2eca54dc8360bce074887a2abd4f63eaeb9 |
39 | +Author: Stef Walter <stefw@gnome.org> |
40 | +Date: 2015-02-25 |
41 | + |
42 | + Release version 3.15.90 |
43 | + |
44 | + NEWS | 6 ++++++ |
45 | + configure.ac | 2 +- |
46 | + 2 files changed, 7 insertions(+), 1 deletion(-) |
47 | + |
48 | +commit a3a45e283275887947182177deb4185304593fbc |
49 | +Author: Muhammet Kara <muhammetk@gmail.com> |
50 | +Date: 2014-12-06 |
51 | + |
52 | + Updated Turkish translation |
53 | + |
54 | + po/tr.po | 255 +++++++++++++++++++++++++++++++-------------------------------- |
55 | + 1 file changed, 127 insertions(+), 128 deletions(-) |
56 | + |
57 | +commit 3eb2019cfd558f3f6a4b1d3fe6c0f9dc60c6457f |
58 | +Author: Trần Ngọc Quân <vnwildman@gmail.com> |
59 | +Date: 2014-11-21 |
60 | + |
61 | + Updated Vietnamese translation |
62 | + |
63 | + Signed-off-by: Trần Ngọc Quân <vnwildman@gmail.com> |
64 | + |
65 | + po/vi.po | 1102 +++++++++----------------------------------------------------- |
66 | + 1 file changed, 158 insertions(+), 944 deletions(-) |
67 | + |
68 | +commit f59fb0646dedd4e730c9e8e3c090d7cd52ac5278 |
69 | +Author: Ting-Wei Lan <lantw@src.gnome.org> |
70 | +Date: 2014-11-16 |
71 | + |
72 | + Fix "void function should not return a value" error for clang |
73 | + |
74 | + https://bugzilla.gnome.org/show_bug.cgi?id=740190 |
75 | + |
76 | + daemon/login/gkd-login.c | 2 +- |
77 | + 1 file changed, 1 insertion(+), 1 deletion(-) |
78 | + |
79 | +commit 28f04eb2bcff369ab13f3c98c00b7bcbf91594d3 |
80 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
81 | +Date: 2014-09-15 |
82 | + |
83 | + asn1x: Sanitize use of asn1_set_value/asn1_take_value |
84 | + |
85 | + Most callers of asn1_set_value() seems to assume this function will take |
86 | + ownership of the passed in GBytes, while it actually takes an additional |
87 | + reference. |
88 | + |
89 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
90 | + |
91 | + egg/egg-asn1x.c | 14 +++++++------- |
92 | + 1 file changed, 7 insertions(+), 7 deletions(-) |
93 | + |
94 | +commit 6da13bb815c3893ab305316ca3f08faaf0093953 |
95 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
96 | +Date: 2014-10-15 |
97 | + |
98 | + daemon: Fix GStrv leak in DBus message handler |
99 | + |
100 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
101 | + |
102 | + daemon/dbus/gkd-dbus.c | 7 +++++-- |
103 | + 1 file changed, 5 insertions(+), 2 deletions(-) |
104 | + |
105 | +commit b087539a6cdd624fc4e0d6ae7de2811ab96864e6 |
106 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
107 | +Date: 2014-09-21 |
108 | + |
109 | + Don't leak password data in gkm_wrap_prompt_do_credential |
110 | + |
111 | + Memory returned by auto_unlock_lookup_object() must be freed |
112 | + while memory returned by gkm_wrap_prompt_request_password() must |
113 | + not be freed. Depending on the situation, CredentialPrompt::password |
114 | + will contain one or the other, and currently this field is never |
115 | + freed, causing leaks when the password comes from |
116 | + auto_unlock_lookup_object(). |
117 | + |
118 | + This commit will always free CredentialPrompt::password when it's |
119 | + no longer needed, and will create a copy of the returned string |
120 | + when gkm_wrap_prompt_request_password() is called. |
121 | + |
122 | + This fixes (line numbers from 3.13.91-2-g45bb5be): |
123 | + |
124 | + ==2190== 8 bytes in 1 blocks are definitely lost in loss record 58 of 1,294 |
125 | + ==2190== at 0x4A0645D: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) |
126 | + ==2190== by 0x5DE6DE6: g_malloc (gmem.c:97) |
127 | + ==2190== by 0x5E024B5: g_memdup (gstrfuncs.c:384) |
128 | + ==2190== by 0x41296C: gkm_template_set (gkm-attributes.c:600) |
129 | + ==2190== by 0x4129F0: gkm_template_set_value (gkm-attributes.c:614) |
130 | + ==2190== by 0x419BCD: mock_secret_C_CreateObject (mock-secret-store.c:174) |
131 | + ==2190== by 0x40646E: wrap_C_CreateObject (gkm-wrap-layer.c:741) |
132 | + ==2190== by 0x418985: find_login_keyring_item (gkm-wrap-login.c:254) |
133 | + ==2190== by 0x4190AF: gkm_wrap_login_lookup_secret (gkm-wrap-login.c:396) |
134 | + ==2190== by 0x407E8D: auto_unlock_lookup_object (gkm-wrap-prompt.c:198) |
135 | + ==2190== by 0x40B9B0: login_prompt_do_specific (gkm-wrap-prompt.c:1453) |
136 | + ==2190== by 0x40C13A: gkm_wrap_prompt_do_login (gkm-wrap-prompt.c:1591) |
137 | + ==2190== by 0x406384: auth_C_Login (gkm-wrap-layer.c:706) |
138 | + ==2190== by 0x40472A: test_specific (test-login-auto.c:156) |
139 | + ==2190== by 0x5E0A27A: test_case_run (gtestutils.c:2059) |
140 | + ==2190== by 0x5E0A602: g_test_run_suite_internal (gtestutils.c:2120) |
141 | + ==2190== by 0x5E0A6C4: g_test_run_suite_internal (gtestutils.c:2131) |
142 | + ==2190== by 0x5E0A6C4: g_test_run_suite_internal (gtestutils.c:2131) |
143 | + ==2190== by 0x5E0A847: g_test_run_suite (gtestutils.c:2184) |
144 | + ==2190== by 0x5E09551: g_test_run (gtestutils.c:1488) |
145 | + ==2190== by 0x410851: testing_thread (egg-testing.c:142) |
146 | + ==2190== by 0x5E0D2F4: g_thread_proxy (gthread.c:764) |
147 | + ==2190== by 0x3B7AE07F34: start_thread (pthread_create.c:309) |
148 | + ==2190== by 0x3B7AAF4C3C: clone (clone.S:111) |
149 | + |
150 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
151 | + |
152 | + pkcs11/wrap-layer/gkm-wrap-prompt.c | 10 +++++++--- |
153 | + 1 file changed, 7 insertions(+), 3 deletions(-) |
154 | + |
155 | +commit dc5a7dc4e5690e258a90d8ddfc39e17c1f8d4938 |
156 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
157 | +Date: 2014-09-21 |
158 | + |
159 | + Don't leak password in login_prompt_do_{specific, user) |
160 | + |
161 | + login_prompt_do_specific() and login_prompt_do_user() both |
162 | + set GkmWrapPrompt::prompt_data to either memory which must be freed |
163 | + with egg_secure_memory_strfree (through a call to |
164 | + auto_unlock_lookup_*) or to const memory which must not be freed |
165 | + (through a call to gkm_wrap_prompt_request_password). |
166 | + |
167 | + These methods currently assume the password memory does not need |
168 | + to be freed, which leads to this leak in test-login-auto (line numbers |
169 | + from 3.13.91-2-g45bb5be): |
170 | + |
171 | + ==2190== 5 bytes in 1 blocks are definitely lost in loss record 17 of 1,294 |
172 | + ==2190== at 0x40F8E4: egg_secure_alloc_full (egg-secure-memory.c:1056) |
173 | + ==2190== by 0x417F5E: egg_secure_alloc (gkm-wrap-login.c:42) |
174 | + ==2190== by 0x419157: gkm_wrap_login_lookup_secret (gkm-wrap-login.c:409) |
175 | + ==2190== by 0x407E8D: auto_unlock_lookup_object (gkm-wrap-prompt.c:198) |
176 | + ==2190== by 0x40B9B0: login_prompt_do_specific (gkm-wrap-prompt.c:1453) |
177 | + ==2190== by 0x40C13A: gkm_wrap_prompt_do_login (gkm-wrap-prompt.c:1591) |
178 | + ==2190== by 0x406384: auth_C_Login (gkm-wrap-layer.c:706) |
179 | + ==2190== by 0x40472A: test_specific (test-login-auto.c:156) |
180 | + ==2190== by 0x5E0A27A: test_case_run (gtestutils.c:2059) |
181 | + ==2190== by 0x5E0A602: g_test_run_suite_internal (gtestutils.c:2120) |
182 | + ==2190== by 0x5E0A6C4: g_test_run_suite_internal (gtestutils.c:2131) |
183 | + ==2190== by 0x5E0A6C4: g_test_run_suite_internal (gtestutils.c:2131) |
184 | + ==2190== by 0x5E0A847: g_test_run_suite (gtestutils.c:2184) |
185 | + ==2190== by 0x5E09551: g_test_run (gtestutils.c:1488) |
186 | + ==2190== by 0x410851: testing_thread (egg-testing.c:142) |
187 | + ==2190== by 0x5E0D2F4: g_thread_proxy (gthread.c:764) |
188 | + ==2190== by 0x3B7AE07F34: start_thread (pthread_create.c:309) |
189 | + ==2190== by 0x3B7AAF4C3C: clone (clone.S:111) |
190 | + |
191 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
192 | + |
193 | + pkcs11/wrap-layer/gkm-wrap-prompt.c | 62 ++++++++++++++++++++++++++----------- |
194 | + 1 file changed, 44 insertions(+), 18 deletions(-) |
195 | + |
196 | +commit abf3473a9a14784a76911ef35c0916d462d55402 |
197 | +Author: Stef Walter <stefw@redhat.com> |
198 | +Date: 2014-10-26 |
199 | + |
200 | + gpg-agent: Use common code for storing/retrieving passwords |
201 | + |
202 | + daemon/gpg-agent/gkd-gpg-agent-ops.c | 269 +++-------------------------------- |
203 | + 1 file changed, 21 insertions(+), 248 deletions(-) |
204 | + |
205 | +commit 354f9887eef1c2c6144b904739ca0230bc2f2a4e |
206 | +Author: Stef Walter <stefw@redhat.com> |
207 | +Date: 2014-10-26 |
208 | + |
209 | + login: Factor out the code for storing/retrieving login keyring passwords |
210 | + |
211 | + This was in the gpg-agent, and want to use it in our ssh-agent wrapper |
212 | + |
213 | + daemon/login/Makefile.am | 1 + |
214 | + daemon/login/gkd-login.c | 300 +++++++++++++++++++++++++++++++++++++++++++++++ |
215 | + daemon/login/gkd-login.h | 20 ++++ |
216 | + 3 files changed, 321 insertions(+) |
217 | + |
218 | +commit d9df0a179fbfae82f8cec20cf46e8b9f03c044ba |
219 | +Author: Stef Walter <stefw@redhat.com> |
220 | +Date: 2014-10-26 |
221 | + |
222 | + gpg-agent: No longer build the testing standalone agent |
223 | + |
224 | + This just caused more unneccessary code that we'd never use. |
225 | + |
226 | + daemon/gpg-agent/Makefile.am | 15 --------------- |
227 | + 1 file changed, 15 deletions(-) |
228 | + |
229 | +commit ea36fd9182c143348851be2053bce9b6da052bc8 |
230 | +Author: Baurzhan Muftakhidinov <baurthefirst@gmail.com> |
231 | +Date: 2014-10-28 |
232 | + |
233 | + Added Kazakh translation |
234 | + |
235 | + po/LINGUAS | 1 + |
236 | + po/kk.po | 572 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
237 | + 2 files changed, 573 insertions(+) |
238 | + |
239 | +commit 082a2fe3278c37b9899c23ebac003791a8999ea5 |
240 | +Author: Stef Walter <stefw@redhat.com> |
241 | +Date: 2014-10-25 |
242 | + |
243 | + Ignore vim swp temporary files |
244 | + |
245 | + .gitignore | 1 + |
246 | + 1 file changed, 1 insertion(+) |
247 | + |
248 | +commit 39aeef6f368e4d8517f19b83c33d55b9cc87f44f |
249 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
250 | +Date: 2014-10-14 |
251 | + |
252 | + GkdGpgAgent: Unref GIOChannel when no longer needed |
253 | + |
254 | + This fixes a memory leak reported by valgrind on daemon shutdown |
255 | + (tested by starting a new daemon instance with --replace). |
256 | + |
257 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
258 | + |
259 | + daemon/gpg-agent/gkd-gpg-agent.c | 1 + |
260 | + 1 file changed, 1 insertion(+) |
261 | + |
262 | +commit 3db6f3bbbd13d6eec29cf96f103975f793b24e4e |
263 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
264 | +Date: 2014-10-14 |
265 | + |
266 | + Free GkdSecretService::alias_directory in finalize() |
267 | + |
268 | + This fixes a memory leak reported by valgrind on daemon shutdown |
269 | + (tested by starting a new daemon instance with --replace). |
270 | + |
271 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
272 | + |
273 | + daemon/dbus/gkd-secret-service.c | 3 +++ |
274 | + 1 file changed, 3 insertions(+) |
275 | + |
276 | +commit ddcdccbf98ba71547c6494db07b3ece505ec769b |
277 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
278 | +Date: 2014-10-13 |
279 | + |
280 | + GkmMock: Fix handling of CKA_G_CREDENTIAL_TEMPLATE attributes |
281 | + |
282 | + These are special as their value is an array of CK_ATTRIBUTE pointing to |
283 | + allocated memory. Moreover, when gkm_mock_C_SetAttributeValue() is |
284 | + called, this memory is owned by the caller, so it needs to be duplicated |
285 | + as the caller may free it before GkmMock no longer needs it. |
286 | + |
287 | + We also need to make sure this memory we just duplicated is correctly |
288 | + freed when no longer needed. |
289 | + |
290 | + This is achieved by introducing an additional global variable, |
291 | + the_credential_template. This is similar to how this type of attributes |
292 | + is handled in GkmSecretCollection. |
293 | + |
294 | + Without this, running test-login-auto in valgrind causes invalid reads: |
295 | + |
296 | + ==5954== Invalid read of size 1 |
297 | + ==5954== at 0x4123D4: gkm_attributes_find_boolean (gkm-attributes.c:503) |
298 | + ==5954== by 0x408C00: set_unlock_options_on_prompt (gkm-wrap-prompt.c:520) |
299 | + ==5954== by 0x40A3E8: gkm_wrap_prompt_do_credential (gkm-wrap-prompt.c:1055) |
300 | + ==5954== by 0x40641C: auth_C_CreateObject (gkm-wrap-layer.c:764) |
301 | + ==5954== by 0x404D7B: test_unlock_keyring (test-login-auto.c:243) |
302 | + ==5954== by 0x5E04A8B: test_case_run (gtestutils.c:2059) |
303 | + ==5954== by 0x5E04E2D: g_test_run_suite_internal (gtestutils.c:2120) |
304 | + ==5954== by 0x5E04EEF: g_test_run_suite_internal (gtestutils.c:2131) |
305 | + ==5954== by 0x5E04EEF: g_test_run_suite_internal (gtestutils.c:2131) |
306 | + ==5954== by 0x5E0506F: g_test_run_suite (gtestutils.c:2184) |
307 | + ==5954== by 0x5E03D5C: g_test_run (gtestutils.c:1488) |
308 | + ==5954== by 0x410725: testing_thread (egg-testing.c:142) |
309 | + ==5954== by 0x5E07B29: g_thread_proxy (gthread.c:764) |
310 | + ==5954== by 0x3899207529: start_thread (pthread_create.c:310) |
311 | + ==5954== by 0x3898F0077C: clone (clone.S:109) |
312 | + ==5954== Address 0x85bad90 is 0 bytes inside a block of size 1 free'd |
313 | + ==5954== at 0x4A07CE9: free (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) |
314 | + ==5954== by 0x5DE1A0D: g_free (gmem.c:190) |
315 | + ==5954== by 0x409E54: gkm_wrap_prompt_finalize (gkm-wrap-prompt.c:933) |
316 | + ==5954== by 0x590293A: g_object_unref (gobject.c:3170) |
317 | + ==5954== by 0x40644A: auth_C_CreateObject (gkm-wrap-layer.c:771) |
318 | + ==5954== by 0x404CD5: test_unlock_keyring (test-login-auto.c:234) |
319 | + ==5954== by 0x5E04A8B: test_case_run (gtestutils.c:2059) |
320 | + ==5954== by 0x5E04E2D: g_test_run_suite_internal (gtestutils.c:2120) |
321 | + ==5954== by 0x5E04EEF: g_test_run_suite_internal (gtestutils.c:2131) |
322 | + ==5954== by 0x5E04EEF: g_test_run_suite_internal (gtestutils.c:2131) |
323 | + ==5954== by 0x5E0506F: g_test_run_suite (gtestutils.c:2184) |
324 | + ==5954== by 0x5E03D5C: g_test_run (gtestutils.c:1488) |
325 | + ==5954== by 0x410725: testing_thread (egg-testing.c:142) |
326 | + ==5954== by 0x5E07B29: g_thread_proxy (gthread.c:764) |
327 | + ==5954== by 0x3899207529: start_thread (pthread_create.c:310) |
328 | + ==5954== by 0x3898F0077C: clone (clone.S:109) |
329 | + |
330 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
331 | + |
332 | + pkcs11/gkm/gkm-mock.c | 27 +++++++++++++++++++++++++-- |
333 | + 1 file changed, 25 insertions(+), 2 deletions(-) |
334 | + |
335 | +commit 87f82c227694279d7e6ad26ca90112835a69c7c5 |
336 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
337 | +Date: 2014-10-01 |
338 | + |
339 | + test-spawn: Fix leaks of EchoData content |
340 | + |
341 | + EchoData::error and EchoData::output must be freed after |
342 | + use. |
343 | + |
344 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
345 | + |
346 | + egg/test-spawn.c | 6 ++++++ |
347 | + 1 file changed, 6 insertions(+) |
348 | + |
349 | +commit 0db2253d64b5607bf20e4e17060de81450e91797 |
350 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
351 | +Date: 2014-09-22 |
352 | + |
353 | + xdg: Fix ref leak in remove_assertion_from_trust() |
354 | + |
355 | + When a transaction is used, remove_assertion_from_trust() will |
356 | + steal the assertion and its key from the 'assertions' hash table. |
357 | + The stolen assertion will then be added to the transaction and be |
358 | + unreferenced later, but the key must be unref'ed as the hash table |
359 | + owned a reference on it. |
360 | + |
361 | + This fixes: |
362 | + |
363 | + ==9337== 104 (40 direct, 64 indirect) bytes in 1 blocks are definitely lost in loss record 614 of 678 |
364 | + ==9337== at 0x4A0645D: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) |
365 | + ==9337== by 0x4EEADE6: g_malloc (gmem.c:97) |
366 | + ==9337== by 0x4F03A22: g_slice_alloc (gslice.c:1007) |
367 | + ==9337== by 0x4EB6954: g_bytes_new_with_free_func (gbytes.c:183) |
368 | + ==9337== by 0x4EB68D5: g_bytes_new_take (gbytes.c:126) |
369 | + ==9337== by 0x4116D4: create_assertion_key (gkm-xdg-trust.c:355) |
370 | + ==9337== by 0x411755: lookup_or_create_assertion_key (gkm-xdg-trust.c:371) |
371 | + ==9337== by 0x41312C: gkm_xdg_trust_replace_assertion (gkm-xdg-trust.c:874) |
372 | + ==9337== by 0x413B62: factory_create_assertion (gkm-xdg-assertion.c:181) |
373 | + ==9337== by 0x4338A3: gkm_session_create_object_for_factory (gkm-session.c:778) |
374 | + ==9337== by 0x433A5B: gkm_session_create_object_for_attributes (gkm-session.c:820) |
375 | + ==9337== by 0x434222: gkm_session_C_CreateObject (gkm-session.c:954) |
376 | + ==9337== by 0x40A1D0: test_create_assertion_twice (test-xdg-trust.c:497) |
377 | + ==9337== by 0x4F0E27A: test_case_run (gtestutils.c:2059) |
378 | + ==9337== by 0x4F0E602: g_test_run_suite_internal (gtestutils.c:2120) |
379 | + ==9337== by 0x4F0E6C4: g_test_run_suite_internal (gtestutils.c:2131) |
380 | + ==9337== by 0x4F0E6C4: g_test_run_suite_internal (gtestutils.c:2131) |
381 | + ==9337== by 0x4F0E847: g_test_run_suite (gtestutils.c:2184) |
382 | + ==9337== by 0x4F0D551: g_test_run (gtestutils.c:1488) |
383 | + ==9337== by 0x4516AD: testing_thread (egg-testing.c:142) |
384 | + ==9337== by 0x4F112F4: g_thread_proxy (gthread.c:764) |
385 | + ==9337== by 0x3B7AE07F34: start_thread (pthread_create.c:309) |
386 | + ==9337== by 0x3B7AAF4C3C: clone (clone.S:111) |
387 | + |
388 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
389 | + |
390 | + pkcs11/xdg-store/gkm-xdg-trust.c | 1 + |
391 | + 1 file changed, 1 insertion(+) |
392 | + |
393 | +commit 37c493c086f1721d6dea77bac462e60dc23096df |
394 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
395 | +Date: 2014-09-22 |
396 | + |
397 | + xdg: Remove wrong unref in gkm_xdg_trust_replace_assertion |
398 | + |
399 | + Callers of lookup_or_create_assertion_key() don't own a reference |
400 | + on the returned GBytes so it should not be unref'fed before exiting |
401 | + gkm_xdg_trust_replace_assertion. |
402 | + This solves the following errors from valgrind when running test-xdg-trust |
403 | + |
404 | + ==15477== |
405 | + ==15477== Thread 2 testing: |
406 | + ==15477== Invalid read of size 4 |
407 | + ==15477== at 0x4EB6B75: g_bytes_unref (gbytes.c:306) |
408 | + ==15477== by 0x4EC2692: g_datalist_clear (gdataset.c:273) |
409 | + ==15477== by 0x4C284A3: g_object_finalize (gobject.c:1033) |
410 | + ==15477== by 0x42B35E: gkm_object_finalize (gkm-object.c:448) |
411 | + ==15477== by 0x414134: gkm_assertion_finalize (gkm-assertion.c:134) |
412 | + ==15477== by 0x4C2D256: g_object_unref (gobject.c:3170) |
413 | + ==15477== by 0x43B9C7: gkm_util_dispose_unref (gkm-util.c:137) |
414 | + ==15477== by 0x4ECEBD1: g_hash_table_remove_all_nodes (ghash.c:503) |
415 | + ==15477== by 0x4ECFC02: g_hash_table_remove_all (ghash.c:1371) |
416 | + ==15477== by 0x431DBB: gkm_session_dispose (gkm-session.c:409) |
417 | + ==15477== by 0x4C2D131: g_object_unref (gobject.c:3133) |
418 | + ==15477== by 0x425391: apartment_free (gkm-module.c:241) |
419 | + ==15477== by 0x4ECEBD1: g_hash_table_remove_all_nodes (ghash.c:503) |
420 | + ==15477== by 0x4ECFC02: g_hash_table_remove_all (ghash.c:1371) |
421 | + ==15477== by 0x4267F9: gkm_module_dispose (gkm-module.c:633) |
422 | + ==15477== by 0x4107D3: gkm_xdg_module_dispose (gkm-xdg-module.c:553) |
423 | + ==15477== by 0x4C28648: g_object_run_dispose (gobject.c:1076) |
424 | + ==15477== by 0x40CCDD: gkm_C_Finalize (gkm-module-ep.h:102) |
425 | + ==15477== by 0x40C7F0: mock_xdg_module_leave_and_finalize (mock-xdg-module.c:151) |
426 | + ==15477== by 0x408585: teardown (test-xdg-trust.c:138) |
427 | + ==15477== by 0x4F0E2FE: test_case_run (gtestutils.c:2069) |
428 | + ==15477== by 0x4F0E602: g_test_run_suite_internal (gtestutils.c:2120) |
429 | + ==15477== by 0x4F0E6C4: g_test_run_suite_internal (gtestutils.c:2131) |
430 | + ==15477== by 0x4F0E6C4: g_test_run_suite_internal (gtestutils.c:2131) |
431 | + ==15477== by 0x4F0E847: g_test_run_suite (gtestutils.c:2184) |
432 | + ==15477== by 0x4F0D551: g_test_run (gtestutils.c:1488) |
433 | + ==15477== by 0x4516B9: testing_thread (egg-testing.c:142) |
434 | + ==15477== by 0x4F112F4: g_thread_proxy (gthread.c:764) |
435 | + ==15477== by 0x3B7AE07F34: start_thread (pthread_create.c:309) |
436 | + ==15477== by 0x3B7AAF4C3C: clone (clone.S:111) |
437 | + ==15477== Address 0x52b6100 is 16 bytes inside a block of size 40 free'd |
438 | + ==15477== at 0x4A07577: free (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) |
439 | + ==15477== by 0x4EEAF5F: g_free (gmem.c:190) |
440 | + ==15477== by 0x4F03C59: g_slice_free1 (gslice.c:1112) |
441 | + ==15477== by 0x4EB6BB8: g_bytes_unref (gbytes.c:310) |
442 | + ==15477== by 0x4ECEBB3: g_hash_table_remove_all_nodes (ghash.c:500) |
443 | + ==15477== by 0x4ECFC02: g_hash_table_remove_all (ghash.c:1371) |
444 | + ==15477== by 0x4ECF7C4: g_hash_table_destroy (ghash.c:1067) |
445 | + ==15477== by 0x4127E9: gkm_xdg_trust_finalize (gkm-xdg-trust.c:706) |
446 | + ==15477== by 0x4C2D256: g_object_unref (gobject.c:3170) |
447 | + ==15477== by 0x43B9C7: gkm_util_dispose_unref (gkm-util.c:137) |
448 | + ==15477== by 0x4ECEBD1: g_hash_table_remove_all_nodes (ghash.c:503) |
449 | + ==15477== by 0x4ECFC02: g_hash_table_remove_all (ghash.c:1371) |
450 | + ==15477== by 0x431DBB: gkm_session_dispose (gkm-session.c:409) |
451 | + ==15477== by 0x4C2D131: g_object_unref (gobject.c:3133) |
452 | + ==15477== by 0x425391: apartment_free (gkm-module.c:241) |
453 | + ==15477== by 0x4ECEBD1: g_hash_table_remove_all_nodes (ghash.c:503) |
454 | + ==15477== by 0x4ECFC02: g_hash_table_remove_all (ghash.c:1371) |
455 | + ==15477== by 0x4267F9: gkm_module_dispose (gkm-module.c:633) |
456 | + ==15477== by 0x4107D3: gkm_xdg_module_dispose (gkm-xdg-module.c:553) |
457 | + ==15477== by 0x4C28648: g_object_run_dispose (gobject.c:1076) |
458 | + ==15477== by 0x40CCDD: gkm_C_Finalize (gkm-module-ep.h:102) |
459 | + ==15477== by 0x40C7F0: mock_xdg_module_leave_and_finalize (mock-xdg-module.c:151) |
460 | + ==15477== by 0x408585: teardown (test-xdg-trust.c:138) |
461 | + ==15477== by 0x4F0E2FE: test_case_run (gtestutils.c:2069) |
462 | + ==15477== by 0x4F0E602: g_test_run_suite_internal (gtestutils.c:2120) |
463 | + ==15477== by 0x4F0E6C4: g_test_run_suite_internal (gtestutils.c:2131) |
464 | + ==15477== by 0x4F0E6C4: g_test_run_suite_internal (gtestutils.c:2131) |
465 | + ==15477== by 0x4F0E847: g_test_run_suite (gtestutils.c:2184) |
466 | + ==15477== by 0x4F0D551: g_test_run (gtestutils.c:1488) |
467 | + ==15477== by 0x4516B9: testing_thread (egg-testing.c:142) |
468 | + ==15477== by 0x4F112F4: g_thread_proxy (gthread.c:764) |
469 | + ==15477== by 0x3B7AE07F34: start_thread (pthread_create.c:309) |
470 | + ==15477== by 0x3B7AAF4C3C: clone (clone.S:111) |
471 | + |
472 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
473 | + |
474 | + pkcs11/xdg-store/gkm-xdg-trust.c | 1 - |
475 | + 1 file changed, 1 deletion(-) |
476 | + |
477 | +commit f2e759970c1a3a42378528a15166221715493288 |
478 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
479 | +Date: 2014-09-21 |
480 | + |
481 | + test-xdg-trust: Fix GChecksum leaks |
482 | + |
483 | + 'md' is created using g_checksum_new() so it must be destroyed |
484 | + with g_checksum_free() after use. |
485 | + |
486 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
487 | + |
488 | + pkcs11/gkm/gkm-attributes.c | 1 + |
489 | + pkcs11/xdg-store/test-xdg-trust.c | 1 + |
490 | + 2 files changed, 2 insertions(+) |
491 | + |
492 | +commit a88f4fcf255495ee575b4b7b94574c3ca0b66ca1 |
493 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
494 | +Date: 2014-09-21 |
495 | + |
496 | + Unref GkmXdgTrust::bytes in finalize() |
497 | + |
498 | + This will cause leaks otherwise, for example in test-xdg-module. |
499 | + |
500 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
501 | + |
502 | + pkcs11/xdg-store/gkm-xdg-trust.c | 4 ++++ |
503 | + 1 file changed, 4 insertions(+) |
504 | + |
505 | +commit 621a86e8b1b14a387cf1dd895005007570c3d2c3 |
506 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
507 | +Date: 2014-09-21 |
508 | + |
509 | + test-xdg-module: Fix memory leak |
510 | + |
511 | + Memory from g_file_get_contents() was never freed. |
512 | + |
513 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
514 | + |
515 | + pkcs11/xdg-store/test-xdg-module.c | 1 + |
516 | + 1 file changed, 1 insertion(+) |
517 | + |
518 | +commit bbb96835cc4120d6c9f0d7bf272f6eb386a07468 |
519 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
520 | +Date: 2014-09-21 |
521 | + |
522 | + xdg: Don't leak ref in lookup_or_create_assertion_key() |
523 | + |
524 | + When lookup_or_create_assertion_key() creates a new assertion key, |
525 | + it own a reference on the GBytes created by create_assertion_key() |
526 | + and it will then take an extra ref on it when associating it with a |
527 | + GkmAssertion instance. |
528 | + |
529 | + This will cause a leak of the memory returned by create_assertion_key() |
530 | + as one of these references will never be dropped. |
531 | + |
532 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
533 | + |
534 | + pkcs11/xdg-store/gkm-xdg-trust.c | 2 +- |
535 | + 1 file changed, 1 insertion(+), 1 deletion(-) |
536 | + |
537 | +commit bc17247fdd1fa843560ecebb4f20a10460df0d63 |
538 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
539 | +Date: 2014-09-21 |
540 | + |
541 | + Fix leak in gkm_mock_C_SetPIN() |
542 | + |
543 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
544 | + |
545 | + pkcs11/gkm/gkm-mock.c | 5 ++++- |
546 | + 1 file changed, 4 insertions(+), 1 deletion(-) |
547 | + |
548 | +commit 670fe30c2dfe7accc738c8def6c1ccf047c944b6 |
549 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
550 | +Date: 2014-10-01 |
551 | + |
552 | + gkm-xdg-assertion: Fix leak in factory_create_assertion() |
553 | + |
554 | + 'purpose' and 'peer' were allocated through gkm_attributes_find_string() |
555 | + and must thus be freed after use. |
556 | + |
557 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
558 | + |
559 | + pkcs11/xdg-store/gkm-xdg-assertion.c | 2 ++ |
560 | + 1 file changed, 2 insertions(+) |
561 | + |
562 | +commit ca2b73954d497ea36b94b547649a08dd85ec38e1 |
563 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
564 | +Date: 2014-10-01 |
565 | + |
566 | + Fix leak in mock_secret_C_CreateObject |
567 | + |
568 | + 'template' is created with gkm_template_new() so it must be freed |
569 | + using gkm_template_free(). |
570 | + |
571 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
572 | + |
573 | + pkcs11/wrap-layer/mock-secret-store.c | 2 +- |
574 | + 1 file changed, 1 insertion(+), 1 deletion(-) |
575 | + |
576 | +commit 165f0e3210e32538c847be91896736c17a1f6ad6 |
577 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
578 | +Date: 2014-10-01 |
579 | + |
580 | + gkm-secret-textual: Fix leak in generate_attribute() |
581 | + |
582 | + The GList returned by gkm_secret_fields_get_names() must be |
583 | + freed with g_list_free after use as this is created using |
584 | + g_hash_table_get_keys(). |
585 | + |
586 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
587 | + |
588 | + pkcs11/secret-store/gkm-secret-textual.c | 1 + |
589 | + 1 file changed, 1 insertion(+) |
590 | + |
591 | +commit 750047bc77edc730e76fc536ce17151b52ae22da |
592 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
593 | +Date: 2014-10-01 |
594 | + |
595 | + gkm-secret-search: Fix leak in factory_create_search() |
596 | + |
597 | + gkm_attribute_get_string() returns a newly allocated string which must |
598 | + be freed when no longer useful. |
599 | + |
600 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
601 | + |
602 | + pkcs11/secret-store/gkm-secret-search.c | 1 + |
603 | + 1 file changed, 1 insertion(+) |
604 | + |
605 | +commit a1984261cb2aabf20d2014a987e2adfbfbae7fc1 |
606 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
607 | +Date: 2014-10-01 |
608 | + |
609 | + gkm-gnome2-storage: Unref GkmGnome2Storage::login in dispose() |
610 | + |
611 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
612 | + |
613 | + pkcs11/gnome2-store/gkm-gnome2-storage.c | 4 ++++ |
614 | + 1 file changed, 4 insertions(+) |
615 | + |
616 | +commit bf96feaff541668ead5438ee074c4318165a3962 |
617 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
618 | +Date: 2014-10-01 |
619 | + |
620 | + secret-store/test*: Don't leak secret data memory |
621 | + |
622 | + Both test-secret-binary and test-secret-textual call |
623 | + g_file_get_contents() but never free the returned data, causing a memory |
624 | + leak. |
625 | + |
626 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
627 | + |
628 | + pkcs11/secret-store/test-secret-binary.c | 1 + |
629 | + pkcs11/secret-store/test-secret-textual.c | 1 + |
630 | + 2 files changed, 2 insertions(+) |
631 | + |
632 | +commit 9421bf589095380286bed90bca67f6ae2746ce0b |
633 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
634 | +Date: 2014-10-01 |
635 | + |
636 | + test-import: Don't leak args.pReserved |
637 | + |
638 | + It's allocated with g_strdup_printf and must thus be freed after use. |
639 | + |
640 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
641 | + |
642 | + pkcs11/gnome2-store/test-import.c | 1 + |
643 | + 1 file changed, 1 insertion(+) |
644 | + |
645 | +commit c2870de15ba639b6a02916a89be07274c2b5895b |
646 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
647 | +Date: 2014-10-01 |
648 | + |
649 | + egg-hkdf: Fix gcry_md_ht_t leak in egg_hkdf_perform |
650 | + |
651 | + The 'md2' gcry_md_ht_t variable is opened with gcry_md_open() in that |
652 | + method but is never closed, which causes a leak. |
653 | + |
654 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
655 | + |
656 | + egg/egg-hkdf.c | 1 + |
657 | + 1 file changed, 1 insertion(+) |
658 | + |
659 | +commit 1581f4a33e350de62cf98bec0530934dcf2a0272 |
660 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
661 | +Date: 2014-10-01 |
662 | + |
663 | + egg-asn1x: Fix memory leak in egg_asn1x_set_any_raw() |
664 | + |
665 | + In error cases, the Atlv variable 'tlv' which was created in this |
666 | + function is not going to be used, so we must free it before returning. |
667 | + |
668 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
669 | + |
670 | + egg/egg-asn1x.c | 1 + |
671 | + 1 file changed, 1 insertion(+) |
672 | + |
673 | +commit 17b429de6d2d911fcfac3fbc042aa5579a3a4535 |
674 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
675 | +Date: 2014-10-01 |
676 | + |
677 | + test-sexp: Fix 2 leaks |
678 | + |
679 | + gcry_sexp_t objects created with gkm_sexp_parse_key() must be freed with |
680 | + gcry_sexp_release(), and gcry_mpi_t objects created with |
681 | + gkm_sexp_extract_mpi() must be freed with gcry_mpi_release() when no |
682 | + longer used. |
683 | + |
684 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
685 | + |
686 | + pkcs11/gkm/test-sexp.c | 2 ++ |
687 | + 1 file changed, 2 insertions(+) |
688 | + |
689 | +commit 33793e57c557830cda36af68376f5dfd2130c073 |
690 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
691 | +Date: 2014-10-01 |
692 | + |
693 | + test-secret: Don't leak new secrets in test_equal() |
694 | + |
695 | + Secrets created with gkm_secret_new* must be unref'fed when no longer |
696 | + used. |
697 | + |
698 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
699 | + |
700 | + pkcs11/gkm/test-secret.c | 3 +++ |
701 | + 1 file changed, 3 insertions(+) |
702 | + |
703 | +commit 75c1fb8b8e3eb0df794bd80ed883fdc16a865664 |
704 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
705 | +Date: 2014-10-01 |
706 | + |
707 | + test-pam: Fix GError leak in error case |
708 | + |
709 | + When g_file_get_contents() fails and sets an error, it must be freed. |
710 | + |
711 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
712 | + |
713 | + pam/test-pam.c | 1 + |
714 | + 1 file changed, 1 insertion(+) |
715 | + |
716 | +commit dbc6af0ea986a4840e6a8a06d632435332c6d2a4 |
717 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
718 | +Date: 2014-10-01 |
719 | + |
720 | + test-padding: Don't leak egg_padding_pkcs1_pad_02 return value |
721 | + |
722 | + egg_padding_pkcs1_pad_02 returns newly allocated data which must be |
723 | + g_free'ed after use. |
724 | + |
725 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
726 | + |
727 | + egg/test-padding.c | 1 + |
728 | + 1 file changed, 1 insertion(+) |
729 | + |
730 | +commit 610a177931675a08a13681d6741a1d18baaa92ee |
731 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
732 | +Date: 2014-10-01 |
733 | + |
734 | + test-asn1: Don't leak 'asn' in test_create_quark() |
735 | + |
736 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
737 | + |
738 | + egg/test-asn1.c | 1 + |
739 | + 1 file changed, 1 insertion(+) |
740 | + |
741 | +commit 1e18f347a1a3444b3fc7126af087d0c90a791e57 |
742 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
743 | +Date: 2014-10-01 |
744 | + |
745 | + test-startup: Use g_strfreev to free GStrv variable |
746 | + |
747 | + gkd_test_launch_daemon returns a "transfer full" GStrv, so it must be |
748 | + freed with g_strfreev after use. |
749 | + |
750 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
751 | + |
752 | + daemon/test-startup.c | 4 ++-- |
753 | + 1 file changed, 2 insertions(+), 2 deletions(-) |
754 | + |
755 | +commit 6c2d07a4faea639ed2b2bcf1815fdb5cbfa4945e |
756 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
757 | +Date: 2014-09-17 |
758 | + |
759 | + gkm-gnome2-file: Free keys to 'entries' hash tables |
760 | + |
761 | + The keys to the 'publics' and 'privates' hash tables are strdup'ed |
762 | + strings, but these strings are never freed. This commit adds a free |
763 | + function for hash table keys to the g_hash_table_new_full call. |
764 | + |
765 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
766 | + |
767 | + pkcs11/gnome2-store/gkm-gnome2-file.c | 2 +- |
768 | + 1 file changed, 1 insertion(+), 1 deletion(-) |
769 | + |
770 | +commit 0fc832aa65e2d125459c9fb43c4d3ba4697270d6 |
771 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
772 | +Date: 2014-09-17 |
773 | + |
774 | + test-data-der: Fix various memory leaks |
775 | + |
776 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
777 | + |
778 | + pkcs11/gkm/test-data-der.c | 13 +++++++++++++ |
779 | + 1 file changed, 13 insertions(+) |
780 | + |
781 | +commit 298d910cfe2e468ad0005646e8a00b5fc8116e10 |
782 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
783 | +Date: 2014-09-17 |
784 | + |
785 | + test-data-asn1: Fix memory leaks in test_asn1_integers |
786 | + |
787 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
788 | + |
789 | + pkcs11/gkm/test-data-asn1.c | 3 +++ |
790 | + 1 file changed, 3 insertions(+) |
791 | + |
792 | +commit c5083ba0216b15e8f9ed842b7097e7fa6c60c25b |
793 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
794 | +Date: 2014-09-17 |
795 | + |
796 | + gkm-data-asn1: Unref buffer we got from egg_asn1x_get_integer_as_raw() |
797 | + |
798 | + Otherwise we will be leaking a reference to that buffer, and it will |
799 | + never get destroyed. This showed up as a memory leaked in test-data-der. |
800 | + |
801 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
802 | + |
803 | + pkcs11/gkm/gkm-data-asn1.c | 1 + |
804 | + 1 file changed, 1 insertion(+) |
805 | + |
806 | +commit 326a94543c5cc6c44d3fd9e1b7fd6eb11a2ea998 |
807 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
808 | +Date: 2014-09-17 |
809 | + |
810 | + egg/test-dn: Don't leak GBytes created in test_dn_value() |
811 | + |
812 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
813 | + |
814 | + egg/test-dn.c | 1 + |
815 | + 1 file changed, 1 insertion(+) |
816 | + |
817 | +commit 8ea8329cc09e263d9628e791e0f5a464bde63413 |
818 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
819 | +Date: 2014-09-17 |
820 | + |
821 | + egg-cleanup: Don't leak 'cleanup' on unregister |
822 | + |
823 | + When unregistering a cleanup instance, the memory allocated for the cleanup |
824 | + was not freed causing a memory leak. |
825 | + |
826 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
827 | + |
828 | + egg/egg-cleanup.c | 1 + |
829 | + 1 file changed, 1 insertion(+) |
830 | + |
831 | +commit 9af2db3f41e713c02e36dc71f0d6295db7d9e408 |
832 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
833 | +Date: 2014-09-17 |
834 | + |
835 | + test-dbus-items: Fix memory leak |
836 | + |
837 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
838 | + |
839 | + daemon/dbus/test-dbus-items.c | 4 +++- |
840 | + 1 file changed, 3 insertions(+), 1 deletion(-) |
841 | + |
842 | +commit 0c9c4a549e770e89e51d5f39995fdfc8c1af71ec |
843 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
844 | +Date: 2014-09-15 |
845 | + |
846 | + Free GkmSecretItem::schema in ::finalize() |
847 | + |
848 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
849 | + |
850 | + pkcs11/secret-store/gkm-secret-item.c | 3 +++ |
851 | + 1 file changed, 3 insertions(+) |
852 | + |
853 | +commit 04129e8d2c1cb8a0f5d6944d4bb7fa45f7171a2a |
854 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
855 | +Date: 2014-09-15 |
856 | + |
857 | + gkm-gnome2-file: Fix leaks in create_cipher() |
858 | + |
859 | + 'key' and 'iv' were allocated before calling |
860 | + egg_symkey_generate_simple() but this function allocates the memory |
861 | + needed for the 'key' and 'iv' return value, so the memory which was |
862 | + allocated in create_cipher() is lost and leaked. |
863 | + This also uses egg_secure_memory_free() to free 'key' memory as |
864 | + egg_symkey_generate_simple() allocates it with egg_secure_alloc(). |
865 | + |
866 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
867 | + |
868 | + pkcs11/gnome2-store/gkm-gnome2-file.c | 11 ++--------- |
869 | + 1 file changed, 2 insertions(+), 9 deletions(-) |
870 | + |
871 | +commit 5a98866f4b7c89451c95e8d559e8f2021c5e1456 |
872 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
873 | +Date: 2014-09-15 |
874 | + |
875 | + gkm-gnome2-file: Fix leak in validate_buffer() |
876 | + |
877 | + 'check' is allocated in this function but never freed. |
878 | + |
879 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
880 | + |
881 | + pkcs11/gnome2-store/gkm-gnome2-file.c | 7 ++++--- |
882 | + 1 file changed, 4 insertions(+), 3 deletions(-) |
883 | + |
884 | +commit 24ff22e04c86885aa4f7f877d612c94e2e2d8f6d |
885 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
886 | +Date: 2014-09-15 |
887 | + |
888 | + Unref GkmCredential::secret in ::dispose |
889 | + |
890 | + This fixes a memory leak. |
891 | + |
892 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
893 | + |
894 | + pkcs11/gkm/gkm-credential.c | 4 ++++ |
895 | + 1 file changed, 4 insertions(+) |
896 | + |
897 | +commit 9bfe73731316389a9975fd440992afa914070467 |
898 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
899 | +Date: 2014-10-14 |
900 | + |
901 | + ssh-agent: Fix leak in op_request_identities |
902 | + |
903 | + The object returned by gck_enumerator_next() must be unref'ed. |
904 | + |
905 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
906 | + |
907 | + daemon/ssh-agent/gkd-ssh-agent-ops.c | 7 ++++--- |
908 | + 1 file changed, 4 insertions(+), 3 deletions(-) |
909 | + |
910 | +commit f81fa15dcbbc3a7ce3e8be9a229e13a0678a606b |
911 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
912 | +Date: 2014-10-01 |
913 | + |
914 | + ssh-agent: Fix leak in op_v1_request_identities |
915 | + |
916 | + The object returned by gck_enumerator_next() must be unref'ed |
917 | + as this method is "transfer full". |
918 | + |
919 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
920 | + |
921 | + daemon/ssh-agent/gkd-ssh-agent-ops.c | 8 ++++---- |
922 | + 1 file changed, 4 insertions(+), 4 deletions(-) |
923 | + |
924 | +commit d177a8b5353f3156ab504f39c20753d6786e5e4d |
925 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
926 | +Date: 2014-09-15 |
927 | + |
928 | + ssh-agent: Fix leak in search_keys_like_attributes() |
929 | + |
930 | + gck_enumerator_next() return value must be unref'fed as it's transfer |
931 | + full. |
932 | + |
933 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
934 | + |
935 | + daemon/ssh-agent/gkd-ssh-agent-ops.c | 5 ++++- |
936 | + 1 file changed, 4 insertions(+), 1 deletion(-) |
937 | + |
938 | +commit 04b9de9fd806598bb49e6b9d49d2697156f6f39d |
939 | +Author: Christophe Fergeau <cfergeau@redhat.com> |
940 | +Date: 2014-10-01 |
941 | + |
942 | + ssh-agent: Fix leak in remove_by_public_key() |
943 | + |
944 | + gck_attributes_find_string() returns a newly allocated string, so it |
945 | + must be g_free'ed after use. |
946 | + |
947 | + https://bugzilla.gnome.org/show_bug.cgi?id=738508 |
948 | + |
949 | + daemon/ssh-agent/gkd-ssh-agent-ops.c | 1 + |
950 | + 1 file changed, 1 insertion(+) |
951 | + |
952 | commit 32900996ac1d913bbae6e378a0a974d207d81c8e |
953 | Author: Stef Walter <stefw@gnome.org> |
954 | Date: 2014-09-23 |
955 | |
956 | === modified file 'Makefile.in' |
957 | --- Makefile.in 2014-12-06 18:47:09 +0000 |
958 | +++ Makefile.in 2015-02-27 19:55:06 +0000 |
959 | @@ -116,9 +116,8 @@ |
960 | $(am__EXEEXT_10) $(am__EXEEXT_12) |
961 | noinst_PROGRAMS = $(check_PROGRAMS) frob-control-change$(EXEEXT) \ |
962 | frob-control-init$(EXEEXT) frob-control-unlock$(EXEEXT) \ |
963 | - frob-control-quit$(EXEEXT) gkd-gpg-agent-standalone$(EXEEXT) \ |
964 | - gkd-ssh-agent-standalone$(EXEEXT) frob-gnome2-file$(EXEEXT) \ |
965 | - gkm-rpc-daemon-standalone$(EXEEXT) \ |
966 | + frob-control-quit$(EXEEXT) gkd-ssh-agent-standalone$(EXEEXT) \ |
967 | + frob-gnome2-file$(EXEEXT) gkm-rpc-daemon-standalone$(EXEEXT) \ |
968 | dump-keyring0-format$(EXEEXT) frob-trust-file$(EXEEXT) \ |
969 | dump-trust-file$(EXEEXT) |
970 | TESTS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \ |
971 | @@ -659,15 +658,6 @@ |
972 | pkcs11/xdg-store/frob-trust-file.$(OBJEXT) |
973 | frob_trust_file_OBJECTS = $(am_frob_trust_file_OBJECTS) |
974 | frob_trust_file_DEPENDENCIES = $(am__DEPENDENCIES_3) |
975 | -am_gkd_gpg_agent_standalone_OBJECTS = daemon/gpg-agent/gkd_gpg_agent_standalone-gkd-gpg-agent-standalone.$(OBJEXT) |
976 | -gkd_gpg_agent_standalone_OBJECTS = \ |
977 | - $(am_gkd_gpg_agent_standalone_OBJECTS) |
978 | -gkd_gpg_agent_standalone_DEPENDENCIES = libgkd-gpg-agent.la libegg.la \ |
979 | - $(am__DEPENDENCIES_1) |
980 | -gkd_gpg_agent_standalone_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ |
981 | - $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ |
982 | - $(gkd_gpg_agent_standalone_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ |
983 | - $(LDFLAGS) -o $@ |
984 | am_gkd_ssh_agent_standalone_OBJECTS = daemon/ssh-agent/gkd_ssh_agent_standalone-gkd-ssh-agent-standalone.$(OBJEXT) |
985 | gkd_ssh_agent_standalone_OBJECTS = \ |
986 | $(am_gkd_ssh_agent_standalone_OBJECTS) |
987 | @@ -1052,8 +1042,7 @@ |
988 | $(dump_trust_file_SOURCES) $(frob_control_change_SOURCES) \ |
989 | $(frob_control_init_SOURCES) $(frob_control_quit_SOURCES) \ |
990 | $(frob_control_unlock_SOURCES) $(frob_gnome2_file_SOURCES) \ |
991 | - $(frob_trust_file_SOURCES) $(gkd_gpg_agent_standalone_SOURCES) \ |
992 | - $(gkd_ssh_agent_standalone_SOURCES) \ |
993 | + $(frob_trust_file_SOURCES) $(gkd_ssh_agent_standalone_SOURCES) \ |
994 | $(gkm_rpc_daemon_standalone_SOURCES) \ |
995 | $(gnome_keyring_@GKR_MAJOR@_SOURCES) \ |
996 | $(gnome_keyring_daemon_SOURCES) $(test_armor_SOURCES) \ |
997 | @@ -1118,7 +1107,6 @@ |
998 | $(frob_control_change_SOURCES) $(frob_control_init_SOURCES) \ |
999 | $(frob_control_quit_SOURCES) $(frob_control_unlock_SOURCES) \ |
1000 | $(frob_gnome2_file_SOURCES) $(frob_trust_file_SOURCES) \ |
1001 | - $(gkd_gpg_agent_standalone_SOURCES) \ |
1002 | $(gkd_ssh_agent_standalone_SOURCES) \ |
1003 | $(gkm_rpc_daemon_standalone_SOURCES) \ |
1004 | $(gnome_keyring_@GKR_MAJOR@_SOURCES) \ |
1005 | @@ -2095,17 +2083,6 @@ |
1006 | $(GCK_CFLAGS) \ |
1007 | $(GCR_CFLAGS) |
1008 | |
1009 | -gkd_gpg_agent_standalone_SOURCES = \ |
1010 | - daemon/gpg-agent/gkd-gpg-agent-standalone.c |
1011 | - |
1012 | -gkd_gpg_agent_standalone_CFLAGS = \ |
1013 | - $(GCK_CFLAGS) |
1014 | - |
1015 | -gkd_gpg_agent_standalone_LDADD = \ |
1016 | - libgkd-gpg-agent.la \ |
1017 | - libegg.la \ |
1018 | - $(DAEMON_LIBS) |
1019 | - |
1020 | libgkd_login_la_SOURCES = \ |
1021 | daemon/login/gkd-login.c \ |
1022 | daemon/login/gkd-login.h \ |
1023 | @@ -2113,6 +2090,7 @@ |
1024 | |
1025 | libgkd_login_la_CFLAGS = \ |
1026 | $(GCK_CFLAGS) \ |
1027 | + $(GCR_CFLAGS) \ |
1028 | $(GOBJECT_CFLAGS) |
1029 | |
1030 | libgkd_login_la_LIBADD = \ |
1031 | @@ -3735,13 +3713,6 @@ |
1032 | frob-trust-file$(EXEEXT): $(frob_trust_file_OBJECTS) $(frob_trust_file_DEPENDENCIES) $(EXTRA_frob_trust_file_DEPENDENCIES) |
1033 | @rm -f frob-trust-file$(EXEEXT) |
1034 | $(AM_V_CCLD)$(LINK) $(frob_trust_file_OBJECTS) $(frob_trust_file_LDADD) $(LIBS) |
1035 | -daemon/gpg-agent/gkd_gpg_agent_standalone-gkd-gpg-agent-standalone.$(OBJEXT): \ |
1036 | - daemon/gpg-agent/$(am__dirstamp) \ |
1037 | - daemon/gpg-agent/$(DEPDIR)/$(am__dirstamp) |
1038 | - |
1039 | -gkd-gpg-agent-standalone$(EXEEXT): $(gkd_gpg_agent_standalone_OBJECTS) $(gkd_gpg_agent_standalone_DEPENDENCIES) $(EXTRA_gkd_gpg_agent_standalone_DEPENDENCIES) |
1040 | - @rm -f gkd-gpg-agent-standalone$(EXEEXT) |
1041 | - $(AM_V_CCLD)$(gkd_gpg_agent_standalone_LINK) $(gkd_gpg_agent_standalone_OBJECTS) $(gkd_gpg_agent_standalone_LDADD) $(LIBS) |
1042 | daemon/ssh-agent/gkd_ssh_agent_standalone-gkd-ssh-agent-standalone.$(OBJEXT): \ |
1043 | daemon/ssh-agent/$(am__dirstamp) \ |
1044 | daemon/ssh-agent/$(DEPDIR)/$(am__dirstamp) |
1045 | @@ -4271,7 +4242,6 @@ |
1046 | @AMDEP_TRUE@@am__include@ @am__quote@daemon/dbus/$(DEPDIR)/test-service.Plo@am__quote@ |
1047 | @AMDEP_TRUE@@am__include@ @am__quote@daemon/dbus/$(DEPDIR)/test_dbus_signals-test-dbus-signals.Po@am__quote@ |
1048 | @AMDEP_TRUE@@am__include@ @am__quote@daemon/dbus/$(DEPDIR)/test_dbus_util-test-dbus-util.Po@am__quote@ |
1049 | -@AMDEP_TRUE@@am__include@ @am__quote@daemon/gpg-agent/$(DEPDIR)/gkd_gpg_agent_standalone-gkd-gpg-agent-standalone.Po@am__quote@ |
1050 | @AMDEP_TRUE@@am__include@ @am__quote@daemon/gpg-agent/$(DEPDIR)/libgkd_gpg_agent_la-gkd-gpg-agent-ops.Plo@am__quote@ |
1051 | @AMDEP_TRUE@@am__include@ @am__quote@daemon/gpg-agent/$(DEPDIR)/libgkd_gpg_agent_la-gkd-gpg-agent.Plo@am__quote@ |
1052 | @AMDEP_TRUE@@am__include@ @am__quote@daemon/login/$(DEPDIR)/libgkd_login_la-gkd-login.Plo@am__quote@ |
1053 | @@ -5340,20 +5310,6 @@ |
1054 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ |
1055 | @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 |
1056 | |
1057 | -daemon/gpg-agent/gkd_gpg_agent_standalone-gkd-gpg-agent-standalone.o: daemon/gpg-agent/gkd-gpg-agent-standalone.c |
1058 | -@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 |
1059 | -@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 |
1060 | -@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@ |
1061 | -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ |
1062 | -@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 |
1063 | - |
1064 | -daemon/gpg-agent/gkd_gpg_agent_standalone-gkd-gpg-agent-standalone.obj: daemon/gpg-agent/gkd-gpg-agent-standalone.c |
1065 | -@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` |
1066 | -@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 |
1067 | -@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@ |
1068 | -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ |
1069 | -@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` |
1070 | - |
1071 | daemon/ssh-agent/gkd_ssh_agent_standalone-gkd-ssh-agent-standalone.o: daemon/ssh-agent/gkd-ssh-agent-standalone.c |
1072 | @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 |
1073 | @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 |
1074 | |
1075 | === modified file 'NEWS' |
1076 | --- NEWS 2014-12-06 18:47:09 +0000 |
1077 | +++ NEWS 2015-02-27 19:55:06 +0000 |
1078 | @@ -1,3 +1,9 @@ |
1079 | +Changes in version 3.15.90 are: |
1080 | + * Fix leaks [#738508] |
1081 | + * Refactoring |
1082 | + * Build fixes [#740190] |
1083 | + * Updated translations |
1084 | + |
1085 | Changes in version 3.14.0 are: |
1086 | * Remove residual GTK+ usage |
1087 | * Updated translations |
1088 | |
1089 | === modified file 'configure' |
1090 | --- configure 2014-12-06 18:47:09 +0000 |
1091 | +++ configure 2015-02-27 19:55:06 +0000 |
1092 | @@ -1,6 +1,6 @@ |
1093 | #! /bin/sh |
1094 | # Guess values for system-dependent variables and create Makefiles. |
1095 | -# Generated by GNU Autoconf 2.69 for gnome-keyring 3.14.0. |
1096 | +# Generated by GNU Autoconf 2.69 for gnome-keyring 3.15.90. |
1097 | # |
1098 | # Report bugs to <gnome-keyring-list@gnome.org>. |
1099 | # |
1100 | @@ -590,8 +590,8 @@ |
1101 | # Identity of this package. |
1102 | PACKAGE_NAME='gnome-keyring' |
1103 | PACKAGE_TARNAME='gnome-keyring' |
1104 | -PACKAGE_VERSION='3.14.0' |
1105 | -PACKAGE_STRING='gnome-keyring 3.14.0' |
1106 | +PACKAGE_VERSION='3.15.90' |
1107 | +PACKAGE_STRING='gnome-keyring 3.15.90' |
1108 | PACKAGE_BUGREPORT='gnome-keyring-list@gnome.org' |
1109 | PACKAGE_URL='https://wiki.gnome.org/Projects/GnomeKeyring' |
1110 | |
1111 | @@ -1465,7 +1465,7 @@ |
1112 | # Omit some internal or obsolete options to make the list less imposing. |
1113 | # This message is too long to be a string in the A/UX 3.1 sh. |
1114 | cat <<_ACEOF |
1115 | -\`configure' configures gnome-keyring 3.14.0 to adapt to many kinds of systems. |
1116 | +\`configure' configures gnome-keyring 3.15.90 to adapt to many kinds of systems. |
1117 | |
1118 | Usage: $0 [OPTION]... [VAR=VALUE]... |
1119 | |
1120 | @@ -1535,7 +1535,7 @@ |
1121 | |
1122 | if test -n "$ac_init_help"; then |
1123 | case $ac_init_help in |
1124 | - short | recursive ) echo "Configuration of gnome-keyring 3.14.0:";; |
1125 | + short | recursive ) echo "Configuration of gnome-keyring 3.15.90:";; |
1126 | esac |
1127 | cat <<\_ACEOF |
1128 | |
1129 | @@ -1707,7 +1707,7 @@ |
1130 | test -n "$ac_init_help" && exit $ac_status |
1131 | if $ac_init_version; then |
1132 | cat <<\_ACEOF |
1133 | -gnome-keyring configure 3.14.0 |
1134 | +gnome-keyring configure 3.15.90 |
1135 | generated by GNU Autoconf 2.69 |
1136 | |
1137 | Copyright (C) 2012 Free Software Foundation, Inc. |
1138 | @@ -2130,7 +2130,7 @@ |
1139 | This file contains any messages produced by compilers while |
1140 | running configure, to aid debugging if configure makes a mistake. |
1141 | |
1142 | -It was created by gnome-keyring $as_me 3.14.0, which was |
1143 | +It was created by gnome-keyring $as_me 3.15.90, which was |
1144 | generated by GNU Autoconf 2.69. Invocation command line was |
1145 | |
1146 | $ $0 $@ |
1147 | @@ -3022,7 +3022,7 @@ |
1148 | |
1149 | # Define the identity of the package. |
1150 | PACKAGE='gnome-keyring' |
1151 | - VERSION='3.14.0' |
1152 | + VERSION='3.15.90' |
1153 | |
1154 | |
1155 | cat >>confdefs.h <<_ACEOF |
1156 | @@ -17777,7 +17777,7 @@ |
1157 | # report actual input values of CONFIG_FILES etc. instead of their |
1158 | # values after options handling. |
1159 | ac_log=" |
1160 | -This file was extended by gnome-keyring $as_me 3.14.0, which was |
1161 | +This file was extended by gnome-keyring $as_me 3.15.90, which was |
1162 | generated by GNU Autoconf 2.69. Invocation command line was |
1163 | |
1164 | CONFIG_FILES = $CONFIG_FILES |
1165 | @@ -17844,7 +17844,7 @@ |
1166 | cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 |
1167 | ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" |
1168 | ac_cs_version="\\ |
1169 | -gnome-keyring config.status 3.14.0 |
1170 | +gnome-keyring config.status 3.15.90 |
1171 | configured by $0, generated by GNU Autoconf 2.69, |
1172 | with options \\"\$ac_cs_config\\" |
1173 | |
1174 | |
1175 | === modified file 'configure.ac' |
1176 | --- configure.ac 2014-12-06 18:47:09 +0000 |
1177 | +++ configure.ac 2015-02-27 19:55:06 +0000 |
1178 | @@ -1,5 +1,5 @@ |
1179 | AC_INIT(gnome-keyring, |
1180 | - 3.14.0, |
1181 | + 3.15.90, |
1182 | [gnome-keyring-list@gnome.org], |
1183 | [gnome-keyring], |
1184 | [https://wiki.gnome.org/Projects/GnomeKeyring]) |
1185 | |
1186 | === modified file 'daemon/dbus/gkd-dbus.c' |
1187 | --- daemon/dbus/gkd-dbus.c 2014-12-06 18:47:09 +0000 |
1188 | +++ daemon/dbus/gkd-dbus.c 2015-02-27 19:55:06 +0000 |
1189 | @@ -102,7 +102,6 @@ |
1190 | |
1191 | const gchar **env; |
1192 | DBusMessageIter items, entry; |
1193 | - gchar **parts; |
1194 | |
1195 | env = gkd_util_get_environment (); |
1196 | g_return_val_if_fail (env, DBUS_HANDLER_RESULT_NOT_YET_HANDLED); |
1197 | @@ -113,13 +112,17 @@ |
1198 | if (!dbus_message_iter_open_container (&args, DBUS_TYPE_ARRAY, "{ss}", &items)) |
1199 | g_return_val_if_reached (DBUS_HANDLER_RESULT_NEED_MEMORY); |
1200 | while (*env) { |
1201 | + gchar **parts; |
1202 | parts = g_strsplit (*env, "=", 2); |
1203 | g_return_val_if_fail (parts && parts[0] && parts[1], DBUS_HANDLER_RESULT_NOT_YET_HANDLED); |
1204 | if (!dbus_message_iter_open_container (&items, DBUS_TYPE_DICT_ENTRY, NULL, &entry) || |
1205 | !dbus_message_iter_append_basic (&entry, DBUS_TYPE_STRING, &parts[0]) || |
1206 | !dbus_message_iter_append_basic (&entry, DBUS_TYPE_STRING, &parts[1]) || |
1207 | - !dbus_message_iter_close_container (&items, &entry)) |
1208 | + !dbus_message_iter_close_container (&items, &entry)) { |
1209 | + g_strfreev (parts); |
1210 | g_return_val_if_reached (DBUS_HANDLER_RESULT_NEED_MEMORY); |
1211 | + } |
1212 | + g_strfreev (parts); |
1213 | ++env; |
1214 | } |
1215 | if (!dbus_message_iter_close_container (&args, &items)) |
1216 | |
1217 | === modified file 'daemon/dbus/gkd-secret-service.c' |
1218 | --- daemon/dbus/gkd-secret-service.c 2014-12-06 18:47:09 +0000 |
1219 | +++ daemon/dbus/gkd-secret-service.c 2015-02-27 19:55:06 +0000 |
1220 | @@ -1245,6 +1245,9 @@ |
1221 | g_hash_table_destroy (self->aliases); |
1222 | self->aliases = NULL; |
1223 | |
1224 | + g_free (self->alias_directory); |
1225 | + self->alias_directory = NULL; |
1226 | + |
1227 | G_OBJECT_CLASS (gkd_secret_service_parent_class)->finalize (obj); |
1228 | } |
1229 | |
1230 | |
1231 | === modified file 'daemon/dbus/test-dbus-items.c' |
1232 | --- daemon/dbus/test-dbus-items.c 2014-04-06 23:26:34 +0000 |
1233 | +++ daemon/dbus/test-dbus-items.c 2015-02-27 19:55:06 +0000 |
1234 | @@ -159,8 +159,10 @@ |
1235 | g_assert_cmpuint (modified, >, (g_get_real_time () / G_TIME_SPAN_SECOND) - 10); |
1236 | g_assert_cmpuint (created, ==, modified); |
1237 | |
1238 | - if (!g_test_thorough ()) |
1239 | + if (!g_test_thorough ()) { |
1240 | + g_free (item); |
1241 | return; |
1242 | + } |
1243 | |
1244 | /* Unfortunately have to wait 1.25 seconds here */ |
1245 | g_usleep (G_TIME_SPAN_SECOND + (G_TIME_SPAN_SECOND / 4)); |
1246 | |
1247 | === modified file 'daemon/gpg-agent/Makefile.am' |
1248 | --- daemon/gpg-agent/Makefile.am 2014-12-06 18:47:09 +0000 |
1249 | +++ daemon/gpg-agent/Makefile.am 2015-02-27 19:55:06 +0000 |
1250 | @@ -13,18 +13,3 @@ |
1251 | libgkd_gpg_agent_la_CFLAGS = \ |
1252 | $(GCK_CFLAGS) \ |
1253 | $(GCR_CFLAGS) |
1254 | - |
1255 | -# ------------------------------------------------------------------------------ |
1256 | -# Standalone binary |
1257 | - |
1258 | -noinst_PROGRAMS += \ |
1259 | - gkd-gpg-agent-standalone |
1260 | - |
1261 | -gkd_gpg_agent_standalone_SOURCES = \ |
1262 | - daemon/gpg-agent/gkd-gpg-agent-standalone.c |
1263 | -gkd_gpg_agent_standalone_CFLAGS = \ |
1264 | - $(GCK_CFLAGS) |
1265 | -gkd_gpg_agent_standalone_LDADD = \ |
1266 | - libgkd-gpg-agent.la \ |
1267 | - libegg.la \ |
1268 | - $(DAEMON_LIBS) |
1269 | |
1270 | === modified file 'daemon/gpg-agent/gkd-gpg-agent-ops.c' |
1271 | --- daemon/gpg-agent/gkd-gpg-agent-ops.c 2014-12-06 18:47:09 +0000 |
1272 | +++ daemon/gpg-agent/gkd-gpg-agent-ops.c 2015-02-27 19:55:06 +0000 |
1273 | @@ -23,6 +23,8 @@ |
1274 | #include "gkd-gpg-agent.h" |
1275 | #include "gkd-gpg-agent-private.h" |
1276 | |
1277 | +#include "daemon/login/gkd-login.h" |
1278 | + |
1279 | #include "egg/egg-error.h" |
1280 | #include "egg/egg-secure-memory.h" |
1281 | |
1282 | @@ -48,31 +50,6 @@ |
1283 | * PASSWORD STUFF |
1284 | */ |
1285 | |
1286 | -static void |
1287 | -keyid_to_field_attribute (const gchar *keyid, |
1288 | - GckBuilder *attrs) |
1289 | -{ |
1290 | - GString *fields = g_string_sized_new (128); |
1291 | - |
1292 | - g_assert (keyid); |
1293 | - g_assert (attrs); |
1294 | - |
1295 | - /* Remember that attribute names are sorted */ |
1296 | - |
1297 | - g_string_append (fields, "keyid"); |
1298 | - g_string_append_c (fields, '\0'); |
1299 | - g_string_append (fields, keyid); |
1300 | - g_string_append_c (fields, '\0'); |
1301 | - |
1302 | - g_string_append (fields, "source"); |
1303 | - g_string_append_c (fields, '\0'); |
1304 | - g_string_append (fields, "gnome-keyring:gpg-agent"); |
1305 | - g_string_append_c (fields, '\0'); |
1306 | - |
1307 | - gck_builder_add_data (attrs, CKA_G_FIELDS, (const guchar *)fields->str, fields->len); |
1308 | - g_string_free (fields, TRUE); |
1309 | -} |
1310 | - |
1311 | static gchar* |
1312 | calculate_label_for_key (const gchar *keyid, const gchar *description) |
1313 | { |
1314 | @@ -107,191 +84,11 @@ |
1315 | return label; |
1316 | } |
1317 | |
1318 | -static GList* |
1319 | -find_saved_items (GckSession *session, GckAttributes *attrs) |
1320 | -{ |
1321 | - GckBuilder builder = GCK_BUILDER_INIT; |
1322 | - GError *error = NULL; |
1323 | - const GckAttribute *attr; |
1324 | - GckObject *search; |
1325 | - GList *results; |
1326 | - gpointer data; |
1327 | - gsize n_data; |
1328 | - |
1329 | - gck_builder_add_ulong (&builder, CKA_CLASS, CKO_G_SEARCH); |
1330 | - gck_builder_add_boolean (&builder, CKA_TOKEN, FALSE); |
1331 | - |
1332 | - attr = gck_attributes_find (attrs, CKA_G_COLLECTION); |
1333 | - if (attr != NULL) |
1334 | - gck_builder_add_attribute (&builder, attr); |
1335 | - |
1336 | - attr = gck_attributes_find (attrs, CKA_G_FIELDS); |
1337 | - g_return_val_if_fail (attr != NULL, NULL); |
1338 | - gck_builder_add_attribute (&builder, attr); |
1339 | - |
1340 | - search = gck_session_create_object (session, gck_builder_end (&builder), NULL, &error); |
1341 | - if (search == NULL) { |
1342 | - g_warning ("couldn't perform search for gpg agent stored passphrases: %s", |
1343 | - egg_error_message (error)); |
1344 | - g_clear_error (&error); |
1345 | - return NULL; |
1346 | - } |
1347 | - |
1348 | - data = gck_object_get_data (search, CKA_G_MATCHED, NULL, &n_data, &error); |
1349 | - gck_object_destroy (search, NULL, NULL); |
1350 | - g_object_unref (search); |
1351 | - |
1352 | - if (data == NULL) { |
1353 | - g_warning ("couldn't retrieve list of gpg agent stored passphrases: %s", |
1354 | - egg_error_message (error)); |
1355 | - g_clear_error (&error); |
1356 | - return NULL; |
1357 | - } |
1358 | - |
1359 | - results = gck_objects_from_handle_array (session, data, n_data / sizeof (CK_ULONG)); |
1360 | - |
1361 | - g_free (data); |
1362 | - return results; |
1363 | -} |
1364 | - |
1365 | static void |
1366 | -do_save_password (GckSession *session, const gchar *keyid, const gchar *description, |
1367 | - const gchar *password, GckAttributes *options) |
1368 | -{ |
1369 | - GckBuilder builder; |
1370 | - GckAttributes *attrs; |
1371 | - gpointer identifier; |
1372 | - gsize n_identifier; |
1373 | - GList *previous; |
1374 | - GError *error = NULL; |
1375 | - GckObject *item; |
1376 | - gchar *text; |
1377 | - gchar *label; |
1378 | - gint i; |
1379 | - |
1380 | - g_assert (password); |
1381 | - |
1382 | - /* Can't save anything if there was no keyid */ |
1383 | - if (keyid == NULL) |
1384 | - return; |
1385 | - |
1386 | - /* Sending a password, needs to be secure */ |
1387 | - gck_builder_init_full (&builder, GCK_BUILDER_SECURE_MEMORY); |
1388 | - |
1389 | - /* Build up basic set of attributes */ |
1390 | - gck_builder_add_boolean (&builder, CKA_TOKEN, TRUE); |
1391 | - gck_builder_add_ulong (&builder, CKA_CLASS, CKO_SECRET_KEY); |
1392 | - keyid_to_field_attribute (keyid, &builder); |
1393 | - |
1394 | - /* Bring in all the unlock options */ |
1395 | - for (i = 0; options && i < gck_attributes_count (options); ++i) |
1396 | - gck_builder_add_attribute (&builder, gck_attributes_at (options, i)); |
1397 | - |
1398 | - /* Find a previously stored object like this, and replace if so */ |
1399 | - attrs = gck_attributes_ref_sink (gck_builder_end (&builder)); |
1400 | - previous = find_saved_items (session, attrs); |
1401 | - if (previous) { |
1402 | - identifier = gck_object_get_data (previous->data, CKA_ID, NULL, &n_identifier, NULL); |
1403 | - if (identifier != NULL) |
1404 | - gck_builder_add_data (&builder, CKA_ID, identifier, n_identifier); |
1405 | - g_free (identifier); |
1406 | - gck_list_unref_free (previous); |
1407 | - } |
1408 | - |
1409 | - text = calculate_label_for_key (keyid, description); |
1410 | - label = g_strdup_printf (_("PGP Key: %s"), text); |
1411 | - g_free (text); |
1412 | - |
1413 | - /* Put in the remainder of the attributes */ |
1414 | - gck_builder_add_all (&builder, attrs); |
1415 | - gck_builder_add_string (&builder, CKA_VALUE, password); |
1416 | - gck_builder_add_string (&builder, CKA_LABEL, label); |
1417 | - gck_attributes_unref (attrs); |
1418 | - g_free (label); |
1419 | - |
1420 | - item = gck_session_create_object (session, gck_builder_end (&builder), NULL, &error); |
1421 | - if (item == NULL) { |
1422 | - g_warning ("couldn't store gpg agent password: %s", egg_error_message (error)); |
1423 | - g_clear_error (&error); |
1424 | - } |
1425 | - |
1426 | - if (item != NULL) |
1427 | - g_object_unref (item); |
1428 | -} |
1429 | - |
1430 | -static gboolean |
1431 | do_clear_password (GckSession *session, const gchar *keyid) |
1432 | { |
1433 | - GckBuilder builder = GCK_BUILDER_INIT; |
1434 | - GckAttributes *attrs; |
1435 | - GList *objects, *l; |
1436 | - GError *error = NULL; |
1437 | - |
1438 | - gck_builder_add_ulong (&builder, CKA_CLASS, CKO_SECRET_KEY); |
1439 | - keyid_to_field_attribute (keyid, &builder); |
1440 | - |
1441 | - attrs = gck_attributes_ref_sink (gck_builder_end (&builder)); |
1442 | - objects = find_saved_items (session, attrs); |
1443 | - gck_attributes_unref (attrs); |
1444 | - |
1445 | - if (!objects) |
1446 | - return TRUE; |
1447 | - |
1448 | - /* Delete first item */ |
1449 | - for (l = objects; l; l = g_list_next (l)) { |
1450 | - if (gck_object_destroy (l->data, NULL, &error)) { |
1451 | - break; /* Only delete the first item */ |
1452 | - } else { |
1453 | - g_warning ("couldn't clear gpg agent password: %s", |
1454 | - egg_error_message (error)); |
1455 | - g_clear_error (&error); |
1456 | - } |
1457 | - } |
1458 | - |
1459 | - gck_list_unref_free (objects); |
1460 | - return TRUE; |
1461 | -} |
1462 | - |
1463 | -static gchar* |
1464 | -do_lookup_password (GckSession *session, const gchar *keyid) |
1465 | -{ |
1466 | - GckBuilder builder = GCK_BUILDER_INIT; |
1467 | - GckAttributes *attrs; |
1468 | - GList *objects, *l; |
1469 | - GError *error = NULL; |
1470 | - gpointer data = NULL; |
1471 | - gsize n_data; |
1472 | - |
1473 | - if (keyid == NULL) |
1474 | - return NULL; |
1475 | - |
1476 | - gck_builder_add_ulong (&builder, CKA_CLASS, CKO_SECRET_KEY); |
1477 | - keyid_to_field_attribute (keyid, &builder); |
1478 | - |
1479 | - attrs = gck_attributes_ref_sink (gck_builder_end (&builder)); |
1480 | - objects = find_saved_items (session, attrs); |
1481 | - gck_attributes_unref (attrs); |
1482 | - |
1483 | - if (!objects) |
1484 | - return NULL; |
1485 | - |
1486 | - /* Return first password */ |
1487 | - for (l = objects; l; l = g_list_next (l)) { |
1488 | - data = gck_object_get_data_full (l->data, CKA_VALUE, egg_secure_realloc, NULL, &n_data, &error); |
1489 | - if (error) { |
1490 | - if (!g_error_matches (error, GCK_ERROR, CKR_USER_NOT_LOGGED_IN)) |
1491 | - g_warning ("couldn't lookup gpg agent password: %s", egg_error_message (error)); |
1492 | - g_clear_error (&error); |
1493 | - data = NULL; |
1494 | - } else { |
1495 | - break; |
1496 | - } |
1497 | - } |
1498 | - |
1499 | - gck_list_unref_free (objects); |
1500 | - |
1501 | - /* Data is null terminated */ |
1502 | - return data; |
1503 | + gkd_login_clear_password (session, "keyid", keyid, |
1504 | + "source", "gnome-keyring:gpg-agent", NULL); |
1505 | } |
1506 | |
1507 | static void |
1508 | @@ -330,11 +127,9 @@ |
1509 | const gchar *description, |
1510 | gboolean confirm) |
1511 | { |
1512 | - GckBuilder builder = GCK_BUILDER_INIT; |
1513 | GcrPrompt *prompt; |
1514 | GError *error = NULL; |
1515 | gboolean auto_unlock; |
1516 | - GList *objects; |
1517 | const gchar *choice; |
1518 | |
1519 | g_assert (GCK_IS_SESSION (session)); |
1520 | @@ -360,23 +155,7 @@ |
1521 | gcr_prompt_set_choice_label (prompt, NULL); |
1522 | |
1523 | } else { |
1524 | - auto_unlock = FALSE; |
1525 | - |
1526 | - gck_builder_add_ulong (&builder, CKA_CLASS, CKO_G_COLLECTION); |
1527 | - gck_builder_add_string (&builder, CKA_ID, "login"); |
1528 | - gck_builder_add_boolean (&builder, CKA_G_LOCKED, FALSE); |
1529 | - |
1530 | - /* Check if the login keyring is usable */ |
1531 | - objects = gck_session_find_objects (session, gck_builder_end (&builder), NULL, &error); |
1532 | - |
1533 | - if (error) { |
1534 | - g_warning ("gpg agent couldn't lookup for login keyring: %s", egg_error_message (error)); |
1535 | - g_clear_error (&error); |
1536 | - } else if (objects) { |
1537 | - auto_unlock = TRUE; |
1538 | - } |
1539 | - |
1540 | - gck_list_unref_free (objects); |
1541 | + auto_unlock = gkd_login_available (session); |
1542 | |
1543 | choice = NULL; |
1544 | if (auto_unlock) |
1545 | @@ -393,20 +172,21 @@ |
1546 | do_get_password (GckSession *session, const gchar *keyid, const gchar *errmsg, |
1547 | const gchar *prompt_text, const gchar *description, gboolean confirm) |
1548 | { |
1549 | - GckBuilder builder = GCK_BUILDER_INIT; |
1550 | GSettings *settings; |
1551 | - GckAttributes *attrs; |
1552 | gchar *password = NULL; |
1553 | GcrPrompt *prompt; |
1554 | gboolean chosen; |
1555 | GError *error = NULL; |
1556 | gint lifetime; |
1557 | gchar *method; |
1558 | + gchar *label; |
1559 | + gchar *text; |
1560 | |
1561 | g_assert (GCK_IS_SESSION (session)); |
1562 | |
1563 | /* Do we have the keyid? */ |
1564 | - password = do_lookup_password (session, keyid); |
1565 | + password = gkd_login_lookup_password (session, "keyid", keyid, |
1566 | + "source", "gnome-keyring:gpg-agent", NULL); |
1567 | if (password != NULL) |
1568 | return password; |
1569 | |
1570 | @@ -428,33 +208,26 @@ |
1571 | chosen = gcr_prompt_get_choice_chosen (prompt); |
1572 | |
1573 | if (chosen) { |
1574 | - g_settings_set_string (settings, "gpg-cache-method", GCR_UNLOCK_OPTION_ALWAYS); |
1575 | - gck_builder_add_string (&builder, CKA_G_COLLECTION, "login"); |
1576 | + method = g_strdup (GCR_UNLOCK_OPTION_ALWAYS); |
1577 | + lifetime = -1; |
1578 | |
1579 | } else { |
1580 | method = g_settings_get_string (settings, "gpg-cache-method"); |
1581 | lifetime = g_settings_get_int (settings, "gpg-cache-ttl"); |
1582 | - |
1583 | - if (g_strcmp0 (method, GCR_UNLOCK_OPTION_IDLE) == 0) { |
1584 | - gck_builder_add_boolean (&builder, CKA_GNOME_TRANSIENT, TRUE); |
1585 | - gck_builder_add_ulong (&builder, CKA_G_DESTRUCT_IDLE, lifetime); |
1586 | - |
1587 | - } else if (g_strcmp0 (method, GCR_UNLOCK_OPTION_TIMEOUT) == 0) { |
1588 | - gck_builder_add_boolean (&builder, CKA_GNOME_TRANSIENT, TRUE); |
1589 | - gck_builder_add_ulong (&builder, CKA_G_DESTRUCT_AFTER, lifetime); |
1590 | - |
1591 | - } else if (g_strcmp0 (method, GCR_UNLOCK_OPTION_SESSION)){ |
1592 | - g_message ("Unsupported gpg-cache-method setting: %s", method); |
1593 | + if (g_str_equal (method, GCR_UNLOCK_OPTION_ALWAYS)) { |
1594 | + g_free (method); |
1595 | + method = NULL; |
1596 | } |
1597 | - |
1598 | - gck_builder_add_string (&builder, CKA_G_COLLECTION, "session"); |
1599 | - g_free (method); |
1600 | } |
1601 | |
1602 | /* Now actually save the password */ |
1603 | - attrs = gck_attributes_ref_sink (gck_builder_end (&builder)); |
1604 | - do_save_password (session, keyid, description, password, attrs); |
1605 | - gck_attributes_unref (attrs); |
1606 | + text = calculate_label_for_key (keyid, description); |
1607 | + label = g_strdup_printf (_("PGP Key: %s"), text); |
1608 | + gkd_login_store_password (session, password, label, method, lifetime, |
1609 | + "keyid", keyid, "source", "gnome-keyring:gpg-agent", NULL); |
1610 | + g_free (label); |
1611 | + g_free (method); |
1612 | + g_free (text); |
1613 | } |
1614 | |
1615 | g_clear_object (&prompt); |
1616 | |
1617 | === removed file 'daemon/gpg-agent/gkd-gpg-agent-standalone.c' |
1618 | --- daemon/gpg-agent/gkd-gpg-agent-standalone.c 2014-12-06 18:47:09 +0000 |
1619 | +++ daemon/gpg-agent/gkd-gpg-agent-standalone.c 1970-01-01 00:00:00 +0000 |
1620 | @@ -1,123 +0,0 @@ |
1621 | -/* |
1622 | - * gnome-keyring |
1623 | - * |
1624 | - * Copyright (C) 2010 Stefan Walter |
1625 | - * |
1626 | - * This program is free software; you can redistribute it and/or modify |
1627 | - * it under the terms of the GNU Lesser General Public License as |
1628 | - * published by the Free Software Foundation; either version 2.1 of |
1629 | - * the License, or (at your option) any later version. |
1630 | - * |
1631 | - * This program is distributed in the hope that it will be useful, but |
1632 | - * WITHOUT ANY WARRANTY; without even the implied warranty of |
1633 | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
1634 | - * Lesser General Public License for more details. |
1635 | - * |
1636 | - * You should have received a copy of the GNU Lesser General Public |
1637 | - * License along with this program; if not, see |
1638 | - * <http://www.gnu.org/licenses/>. |
1639 | - */ |
1640 | - |
1641 | -#include "config.h" |
1642 | - |
1643 | -#include "gkd-gpg-agent.h" |
1644 | -#include "gkd-gpg-agent-private.h" |
1645 | - |
1646 | -#include "egg/egg-error.h" |
1647 | -#include "egg/egg-secure-memory.h" |
1648 | - |
1649 | -#include <gck/gck.h> |
1650 | - |
1651 | -#include <glib.h> |
1652 | -#include <glib-object.h> |
1653 | - |
1654 | -#include <pwd.h> |
1655 | -#include <string.h> |
1656 | -#include <unistd.h> |
1657 | - |
1658 | -EGG_SECURE_DEFINE_GLIB_GLOBALS (); |
1659 | - |
1660 | -static gboolean |
1661 | -accept_client (GIOChannel *channel, GIOCondition cond, gpointer unused) |
1662 | -{ |
1663 | - gkd_gpg_agent_accept (); |
1664 | - return TRUE; |
1665 | -} |
1666 | - |
1667 | -static gboolean |
1668 | -authenticate_slot (GckModule *module, GckSlot *slot, gchar *label, gchar **password, gpointer unused) |
1669 | -{ |
1670 | - gchar *prompt = g_strdup_printf ("Enter token password (%s): ", label); |
1671 | - char *result = getpass (prompt); |
1672 | - g_free (prompt); |
1673 | - *password = g_strdup (result); |
1674 | - memset (result, 0, strlen (result)); |
1675 | - return TRUE; |
1676 | -} |
1677 | - |
1678 | -static gboolean |
1679 | -authenticate_object (GckModule *module, GckObject *object, gchar *label, gchar **password) |
1680 | -{ |
1681 | - gchar *prompt = g_strdup_printf ("Enter object password (%s): ", label); |
1682 | - char *result = getpass (prompt); |
1683 | - g_free (prompt); |
1684 | - *password = g_strdup (result); |
1685 | - memset (result, 0, strlen (result)); |
1686 | - return TRUE; |
1687 | -} |
1688 | - |
1689 | -int |
1690 | -main(int argc, char *argv[]) |
1691 | -{ |
1692 | - GckModule *module; |
1693 | - GError *error = NULL; |
1694 | - GIOChannel *channel; |
1695 | - GMainLoop *loop; |
1696 | - gboolean ret; |
1697 | - int sock; |
1698 | - |
1699 | -#if !GLIB_CHECK_VERSION(2,35,0) |
1700 | - g_type_init (); |
1701 | -#endif |
1702 | - |
1703 | - if (argc <= 1) { |
1704 | - g_message ("specify pkcs11 module on the command line"); |
1705 | - return 1; |
1706 | - } |
1707 | - |
1708 | - module = gck_module_initialize (argv[1], NULL, &error); |
1709 | - if (!module) { |
1710 | - g_message ("couldn't load pkcs11 module: %s", egg_error_message (error)); |
1711 | - g_clear_error (&error); |
1712 | - return 1; |
1713 | - } |
1714 | - |
1715 | - g_signal_connect (module, "authenticate-slot", G_CALLBACK (authenticate_slot), NULL); |
1716 | - g_signal_connect (module, "authenticate-object", G_CALLBACK (authenticate_object), NULL); |
1717 | - |
1718 | - ret = gkd_gpg_agent_initialize_with_module (module); |
1719 | - g_object_unref (module); |
1720 | - |
1721 | - if (ret == FALSE) |
1722 | - return 1; |
1723 | - |
1724 | - sock = gkd_gpg_agent_startup ("/tmp"); |
1725 | - if (sock == -1) |
1726 | - return 1; |
1727 | - |
1728 | - channel = g_io_channel_unix_new (sock); |
1729 | - g_io_add_watch (channel, G_IO_IN | G_IO_HUP, accept_client, NULL); |
1730 | - g_io_channel_unref (channel); |
1731 | - |
1732 | - g_print ("GPG_AGENT_INFO=%s\n", g_getenv ("GPG_AGENT_INFO")); |
1733 | - |
1734 | - /* Run a main loop */ |
1735 | - loop = g_main_loop_new (NULL, FALSE); |
1736 | - g_main_loop_run (loop); |
1737 | - g_main_loop_unref (loop); |
1738 | - |
1739 | - gkd_gpg_agent_shutdown (); |
1740 | - gkd_gpg_agent_uninitialize (); |
1741 | - |
1742 | - return 0; |
1743 | -} |
1744 | |
1745 | === modified file 'daemon/gpg-agent/gkd-gpg-agent.c' |
1746 | --- daemon/gpg-agent/gkd-gpg-agent.c 2014-12-06 18:47:09 +0000 |
1747 | +++ daemon/gpg-agent/gkd-gpg-agent.c 2015-02-27 19:55:06 +0000 |
1748 | @@ -207,6 +207,7 @@ |
1749 | } |
1750 | |
1751 | g_io_channel_shutdown (call.channel, FALSE, NULL); |
1752 | + g_io_channel_unref (call.channel); |
1753 | g_object_unref (call.module); |
1754 | |
1755 | close (call.sock); |
1756 | |
1757 | === modified file 'daemon/login/Makefile.am' |
1758 | --- daemon/login/Makefile.am 2014-12-06 18:47:09 +0000 |
1759 | +++ daemon/login/Makefile.am 2015-02-27 19:55:06 +0000 |
1760 | @@ -10,6 +10,7 @@ |
1761 | $(NULL) |
1762 | libgkd_login_la_CFLAGS = \ |
1763 | $(GCK_CFLAGS) \ |
1764 | + $(GCR_CFLAGS) \ |
1765 | $(GOBJECT_CFLAGS) |
1766 | libgkd_login_la_LIBADD = \ |
1767 | $(GCK_LIBS) \ |
1768 | |
1769 | === modified file 'daemon/login/gkd-login.c' |
1770 | --- daemon/login/gkd-login.c 2014-12-06 18:47:09 +0000 |
1771 | +++ daemon/login/gkd-login.c 2015-02-27 19:55:06 +0000 |
1772 | @@ -31,11 +31,14 @@ |
1773 | #include "pkcs11/wrap-layer/gkm-wrap-layer.h" |
1774 | |
1775 | #include <gck/gck.h> |
1776 | +#include <gcr/gcr-unlock-options.h> |
1777 | |
1778 | #include <glib/gi18n.h> |
1779 | |
1780 | #include <string.h> |
1781 | |
1782 | +EGG_SECURE_DECLARE (gkd_login); |
1783 | + |
1784 | static GList* |
1785 | module_instances (void) |
1786 | { |
1787 | @@ -82,6 +85,10 @@ |
1788 | GckSlot *slot = NULL; |
1789 | GError *error = NULL; |
1790 | GckSession *session; |
1791 | + GList *owned = NULL; |
1792 | + |
1793 | + if (modules == NULL) |
1794 | + modules = owned = module_instances (); |
1795 | |
1796 | slot = gck_modules_token_for_uri (modules, "pkcs11:token=Secret%20Store", &error); |
1797 | if (!slot) { |
1798 | @@ -96,6 +103,7 @@ |
1799 | } |
1800 | |
1801 | g_object_unref (slot); |
1802 | + g_list_free_full (owned, g_object_unref); |
1803 | |
1804 | return session; |
1805 | } |
1806 | @@ -415,3 +423,295 @@ |
1807 | gck_list_unref_free (modules); |
1808 | return result; |
1809 | } |
1810 | + |
1811 | +gboolean |
1812 | +gkd_login_available (GckSession *session) |
1813 | +{ |
1814 | + GckBuilder builder = GCK_BUILDER_INIT; |
1815 | + gboolean available = FALSE; |
1816 | + GError *error = NULL; |
1817 | + GList *objects; |
1818 | + |
1819 | + if (!session) |
1820 | + session = lookup_login_session (NULL); |
1821 | + else |
1822 | + g_object_ref (session); |
1823 | + |
1824 | + if (session) { |
1825 | + gck_builder_add_ulong (&builder, CKA_CLASS, CKO_G_COLLECTION); |
1826 | + gck_builder_add_string (&builder, CKA_ID, "login"); |
1827 | + gck_builder_add_boolean (&builder, CKA_G_LOCKED, FALSE); |
1828 | + |
1829 | + /* Check if the login keyring is usable */ |
1830 | + objects = gck_session_find_objects (session, gck_builder_end (&builder), NULL, &error); |
1831 | + if (error) { |
1832 | + g_warning ("couldn't lookup login keyring: %s", error->message); |
1833 | + g_clear_error (&error); |
1834 | + } else if (objects) { |
1835 | + available = TRUE; |
1836 | + } |
1837 | + g_list_free_full (objects, g_object_unref); |
1838 | + } |
1839 | + |
1840 | + g_object_unref (session); |
1841 | + return available; |
1842 | +} |
1843 | + |
1844 | +static GList * |
1845 | +find_saved_items (GckSession *session, |
1846 | + GckAttributes *attrs) |
1847 | +{ |
1848 | + GckBuilder builder = GCK_BUILDER_INIT; |
1849 | + GError *error = NULL; |
1850 | + const GckAttribute *attr; |
1851 | + GckObject *search; |
1852 | + GList *results; |
1853 | + gpointer data; |
1854 | + gsize n_data; |
1855 | + |
1856 | + gck_builder_add_ulong (&builder, CKA_CLASS, CKO_G_SEARCH); |
1857 | + gck_builder_add_boolean (&builder, CKA_TOKEN, FALSE); |
1858 | + |
1859 | + attr = gck_attributes_find (attrs, CKA_G_COLLECTION); |
1860 | + if (attr != NULL) |
1861 | + gck_builder_add_attribute (&builder, attr); |
1862 | + |
1863 | + attr = gck_attributes_find (attrs, CKA_G_FIELDS); |
1864 | + g_return_val_if_fail (attr != NULL, NULL); |
1865 | + gck_builder_add_attribute (&builder, attr); |
1866 | + |
1867 | + search = gck_session_create_object (session, gck_builder_end (&builder), NULL, &error); |
1868 | + if (search == NULL) { |
1869 | + g_warning ("couldn't perform search for gpg agent stored passphrases: %s", |
1870 | + egg_error_message (error)); |
1871 | + g_clear_error (&error); |
1872 | + return NULL; |
1873 | + } |
1874 | + |
1875 | + data = gck_object_get_data (search, CKA_G_MATCHED, NULL, &n_data, &error); |
1876 | + gck_object_destroy (search, NULL, NULL); |
1877 | + g_object_unref (search); |
1878 | + |
1879 | + if (data == NULL) { |
1880 | + g_warning ("couldn't retrieve list of gpg agent stored passphrases: %s", |
1881 | + egg_error_message (error)); |
1882 | + g_clear_error (&error); |
1883 | + return NULL; |
1884 | + } |
1885 | + |
1886 | + results = gck_objects_from_handle_array (session, data, n_data / sizeof (CK_ULONG)); |
1887 | + |
1888 | + g_free (data); |
1889 | + return results; |
1890 | +} |
1891 | + |
1892 | +static gboolean |
1893 | +fields_to_attribute (GckBuilder *builder, |
1894 | + const gchar *field, |
1895 | + va_list va) |
1896 | +{ |
1897 | + GString *fields = g_string_sized_new (128); |
1898 | + const gchar *last = NULL; |
1899 | + const gchar *value; |
1900 | + |
1901 | + while (field) { |
1902 | + if (g_strcmp0 (last, field) >= 0) { |
1903 | + g_critical ("lookup fields must be sorted '%s' >= '%s'", last, field); |
1904 | + return FALSE; |
1905 | + } |
1906 | + |
1907 | + last = field; |
1908 | + value = va_arg (va, const gchar *); |
1909 | + g_return_val_if_fail (value != NULL, FALSE); |
1910 | + |
1911 | + g_string_append (fields, field); |
1912 | + g_string_append_c (fields, '\0'); |
1913 | + g_string_append (fields, value); |
1914 | + g_string_append_c (fields, '\0'); |
1915 | + |
1916 | + field = va_arg (va, const gchar *); |
1917 | + } |
1918 | + |
1919 | + gck_builder_add_data (builder, CKA_G_FIELDS, (const guchar *)fields->str, fields->len); |
1920 | + g_string_free (fields, TRUE); |
1921 | + return TRUE; |
1922 | +} |
1923 | + |
1924 | +gchar * |
1925 | +gkd_login_lookup_password (GckSession *session, |
1926 | + const gchar *field, |
1927 | + ...) |
1928 | +{ |
1929 | + GckBuilder builder = GCK_BUILDER_INIT; |
1930 | + GckAttributes *attrs; |
1931 | + GList *objects, *l; |
1932 | + GError *error = NULL; |
1933 | + gpointer data = NULL; |
1934 | + gsize length; |
1935 | + va_list va; |
1936 | + |
1937 | + if (!session) |
1938 | + session = lookup_login_session (NULL); |
1939 | + else |
1940 | + session = g_object_ref (session); |
1941 | + if (!session) |
1942 | + return NULL; |
1943 | + |
1944 | + gck_builder_add_ulong (&builder, CKA_CLASS, CKO_SECRET_KEY); |
1945 | + |
1946 | + va_start (va, field); |
1947 | + if (!fields_to_attribute (&builder, field, va)) |
1948 | + g_return_val_if_reached (FALSE); |
1949 | + va_end (va); |
1950 | + |
1951 | + attrs = gck_attributes_ref_sink (gck_builder_end (&builder)); |
1952 | + objects = find_saved_items (session, attrs); |
1953 | + gck_attributes_unref (attrs); |
1954 | + |
1955 | + /* Return first password */ |
1956 | + data = NULL; |
1957 | + for (l = objects; l; l = g_list_next (l)) { |
1958 | + data = gck_object_get_data_full (l->data, CKA_VALUE, egg_secure_realloc, NULL, &length, &error); |
1959 | + if (error) { |
1960 | + if (!g_error_matches (error, GCK_ERROR, CKR_USER_NOT_LOGGED_IN)) |
1961 | + g_warning ("couldn't lookup gpg agent password: %s", egg_error_message (error)); |
1962 | + g_clear_error (&error); |
1963 | + data = NULL; |
1964 | + } else { |
1965 | + break; |
1966 | + } |
1967 | + } |
1968 | + |
1969 | + g_list_free_full (objects, g_object_unref); |
1970 | + g_object_unref (session); |
1971 | + |
1972 | + /* Data is null terminated */ |
1973 | + return data; |
1974 | +} |
1975 | + |
1976 | +void |
1977 | +gkd_login_clear_password (GckSession *session, |
1978 | + const gchar *field, |
1979 | + ...) |
1980 | +{ |
1981 | + GckBuilder builder = GCK_BUILDER_INIT; |
1982 | + GckAttributes *attrs; |
1983 | + GList *objects, *l; |
1984 | + GError *error = NULL; |
1985 | + va_list va; |
1986 | + |
1987 | + if (!session) |
1988 | + session = lookup_login_session (NULL); |
1989 | + else |
1990 | + session = g_object_ref (session); |
1991 | + if (!session) |
1992 | + return; |
1993 | + |
1994 | + gck_builder_add_ulong (&builder, CKA_CLASS, CKO_SECRET_KEY); |
1995 | + |
1996 | + va_start (va, field); |
1997 | + if (!fields_to_attribute (&builder, field, va)) |
1998 | + g_return_if_reached (); |
1999 | + va_end (va); |
2000 | + |
2001 | + attrs = gck_attributes_ref_sink (gck_builder_end (&builder)); |
2002 | + objects = find_saved_items (session, attrs); |
2003 | + gck_attributes_unref (attrs); |
2004 | + |
2005 | + /* Delete first item */ |
2006 | + for (l = objects; l; l = g_list_next (l)) { |
2007 | + if (gck_object_destroy (l->data, NULL, &error)) |
2008 | + break; /* Only delete the first item */ |
2009 | + g_warning ("couldn't clear assword: %s", error->message); |
2010 | + g_clear_error (&error); |
2011 | + } |
2012 | + |
2013 | + g_list_free_full (objects, g_object_unref); |
2014 | + g_object_unref (session); |
2015 | +} |
2016 | + |
2017 | +gboolean |
2018 | +gkd_login_store_password (GckSession *session, |
2019 | + const gchar *password, |
2020 | + const gchar *label, |
2021 | + const gchar *method, |
2022 | + gint lifetime, |
2023 | + const gchar *field, |
2024 | + ...) |
2025 | +{ |
2026 | + GckBuilder builder = GCK_BUILDER_INIT; |
2027 | + GckAttributes *attrs; |
2028 | + guchar *identifier; |
2029 | + GList *previous; |
2030 | + gboolean ret = FALSE; |
2031 | + GckObject *item; |
2032 | + GError *error = NULL; |
2033 | + gsize length; |
2034 | + va_list va; |
2035 | + |
2036 | + if (!method) |
2037 | + method = GCR_UNLOCK_OPTION_SESSION; |
2038 | + |
2039 | + if (!session) |
2040 | + session = lookup_login_session (NULL); |
2041 | + else |
2042 | + session = g_object_ref (session); |
2043 | + if (!session) |
2044 | + return FALSE; |
2045 | + |
2046 | + va_start (va, field); |
2047 | + if (!fields_to_attribute (&builder, field, va)) |
2048 | + g_return_val_if_reached (FALSE); |
2049 | + va_end (va); |
2050 | + |
2051 | + if (g_str_equal (method, GCR_UNLOCK_OPTION_ALWAYS)) { |
2052 | + gck_builder_add_string (&builder, CKA_G_COLLECTION, "login"); |
2053 | + |
2054 | + } else { |
2055 | + if (g_str_equal (method, GCR_UNLOCK_OPTION_IDLE)) { |
2056 | + gck_builder_add_boolean (&builder, CKA_GNOME_TRANSIENT, TRUE); |
2057 | + gck_builder_add_ulong (&builder, CKA_G_DESTRUCT_IDLE, lifetime); |
2058 | + |
2059 | + } else if (g_str_equal (method, GCR_UNLOCK_OPTION_TIMEOUT)) { |
2060 | + gck_builder_add_boolean (&builder, CKA_GNOME_TRANSIENT, TRUE); |
2061 | + gck_builder_add_ulong (&builder, CKA_G_DESTRUCT_AFTER, lifetime); |
2062 | + |
2063 | + } else if (!g_str_equal (method, GCR_UNLOCK_OPTION_SESSION)) { |
2064 | + g_message ("Unsupported gpg-cache-method setting: %s", method); |
2065 | + } |
2066 | + gck_builder_add_string (&builder, CKA_G_COLLECTION, "session"); |
2067 | + } |
2068 | + |
2069 | + gck_builder_add_boolean (&builder, CKA_TOKEN, TRUE); |
2070 | + gck_builder_add_ulong (&builder, CKA_CLASS, CKO_SECRET_KEY); |
2071 | + |
2072 | + /* Find a previously stored object like this, and replace if so */ |
2073 | + attrs = gck_attributes_ref_sink (gck_builder_end (&builder)); |
2074 | + previous = find_saved_items (session, attrs); |
2075 | + if (previous) { |
2076 | + identifier = gck_object_get_data (previous->data, CKA_ID, NULL, &length, NULL); |
2077 | + if (identifier != NULL) |
2078 | + gck_builder_add_data (&builder, CKA_ID, identifier, length); |
2079 | + g_free (identifier); |
2080 | + g_list_free_full (previous, g_object_unref); |
2081 | + } |
2082 | + |
2083 | + /* Put in the remainder of the attributes */ |
2084 | + gck_builder_add_all (&builder, attrs); |
2085 | + gck_builder_add_string (&builder, CKA_VALUE, password); |
2086 | + gck_builder_add_string (&builder, CKA_LABEL, label); |
2087 | + gck_attributes_unref (attrs); |
2088 | + |
2089 | + item = gck_session_create_object (session, gck_builder_end (&builder), NULL, &error); |
2090 | + if (item == NULL) { |
2091 | + g_warning ("couldn't store gpg agent password: %s", egg_error_message (error)); |
2092 | + g_clear_error (&error); |
2093 | + ret = FALSE; |
2094 | + } else { |
2095 | + g_object_unref (item); |
2096 | + ret = TRUE; |
2097 | + } |
2098 | + |
2099 | + g_object_unref (session); |
2100 | + return ret; |
2101 | +} |
2102 | |
2103 | === modified file 'daemon/login/gkd-login.h' |
2104 | --- daemon/login/gkd-login.h 2014-04-06 23:26:34 +0000 |
2105 | +++ daemon/login/gkd-login.h 2015-02-27 19:55:06 +0000 |
2106 | @@ -23,9 +23,29 @@ |
2107 | |
2108 | #include <glib.h> |
2109 | |
2110 | +typedef struct _GckSession GckSession; |
2111 | + |
2112 | gboolean gkd_login_unlock (const gchar *master); |
2113 | |
2114 | gboolean gkd_login_change_lock (const gchar *original, |
2115 | const gchar *master); |
2116 | |
2117 | +gboolean gkd_login_available (GckSession *session); |
2118 | + |
2119 | +gchar * gkd_login_lookup_password (GckSession *session, |
2120 | + const gchar *field, |
2121 | + ...) G_GNUC_NULL_TERMINATED; |
2122 | + |
2123 | +void gkd_login_clear_password (GckSession *session, |
2124 | + const gchar *field, |
2125 | + ...) G_GNUC_NULL_TERMINATED; |
2126 | + |
2127 | +gboolean gkd_login_store_password (GckSession *session, |
2128 | + const gchar *password, |
2129 | + const gchar *label, |
2130 | + const gchar *method, |
2131 | + gint lifetime, |
2132 | + const gchar *field, |
2133 | + ...) G_GNUC_NULL_TERMINATED; |
2134 | + |
2135 | #endif /* __GKD_LOGIN_H__ */ |
2136 | |
2137 | === modified file 'daemon/ssh-agent/gkd-ssh-agent-ops.c' |
2138 | --- daemon/ssh-agent/gkd-ssh-agent-ops.c 2012-05-16 17:39:27 +0000 |
2139 | +++ daemon/ssh-agent/gkd-ssh-agent-ops.c 2015-02-27 19:55:06 +0000 |
2140 | @@ -139,6 +139,7 @@ |
2141 | en = gck_modules_enumerate_objects (modules, search, GCK_SESSION_AUTHENTICATE | GCK_SESSION_READ_WRITE); |
2142 | |
2143 | for (;;) { |
2144 | + gboolean done; |
2145 | object = gck_enumerator_next (en, NULL, &error); |
2146 | if (!object) { |
2147 | if (error) { |
2148 | @@ -148,7 +149,9 @@ |
2149 | break; |
2150 | } |
2151 | |
2152 | - if (!(func) (object, user_data)) |
2153 | + done = !(func) (object, user_data); |
2154 | + g_object_unref (object); |
2155 | + if (done) |
2156 | break; |
2157 | } |
2158 | |
2159 | @@ -435,6 +438,7 @@ |
2160 | g_free (label); |
2161 | return; |
2162 | } |
2163 | + g_free (label); |
2164 | } |
2165 | |
2166 | /* Lock token objects, remove session objects */ |
2167 | @@ -773,9 +777,10 @@ |
2168 | g_return_val_if_fail (en, FALSE); |
2169 | |
2170 | all_attrs = NULL; |
2171 | - do { |
2172 | - obj = gck_enumerator_next (en, NULL, &error); |
2173 | - } while (obj && load_identity_v2_attributes (obj, &all_attrs)); |
2174 | + while ((obj = gck_enumerator_next (en, NULL, &error))) { |
2175 | + load_identity_v2_attributes (obj, &all_attrs); |
2176 | + g_object_unref (obj); |
2177 | + } |
2178 | |
2179 | g_object_unref (en); |
2180 | |
2181 | @@ -839,10 +844,10 @@ |
2182 | GCK_SESSION_AUTHENTICATE | GCK_SESSION_READ_WRITE); |
2183 | |
2184 | all_attrs = NULL; |
2185 | - do { |
2186 | - obj = gck_enumerator_next (en, NULL, &error); |
2187 | - } while (obj && load_identity_v1_attributes (obj, &all_attrs)); |
2188 | - |
2189 | + while ((obj = gck_enumerator_next (en, NULL, &error))) { |
2190 | + load_identity_v1_attributes (obj, &all_attrs); |
2191 | + g_object_unref (obj); |
2192 | + } |
2193 | g_object_unref (en); |
2194 | |
2195 | if (error) { |
2196 | |
2197 | === modified file 'daemon/test-startup.c' |
2198 | --- daemon/test-startup.c 2014-04-06 23:26:34 +0000 |
2199 | +++ daemon/test-startup.c 2015-02-27 19:55:06 +0000 |
2200 | @@ -232,13 +232,13 @@ |
2201 | output = gkd_test_launch_daemon (test->directory, argv, &pid, |
2202 | "XDG_RUNTIME_DIR", "/tmp/keyring-test-two", |
2203 | NULL); |
2204 | - g_free (output); |
2205 | + g_strfreev (output); |
2206 | |
2207 | /* Replace with the second daemon */ |
2208 | output = gkd_test_launch_daemon (test->directory, replace, &test->pid, |
2209 | "XDG_RUNTIME_DIR", "/tmp/keyring-test-two", |
2210 | NULL); |
2211 | - g_free (output); |
2212 | + g_strfreev (output); |
2213 | |
2214 | /* The first daemon should have exited cleanly here */ |
2215 | g_assert_cmpint (waitpid (pid, &status, 0), ==, pid); |
2216 | |
2217 | === modified file 'debian/changelog' |
2218 | --- debian/changelog 2014-12-29 10:12:42 +0000 |
2219 | +++ debian/changelog 2015-02-27 19:55:06 +0000 |
2220 | @@ -1,3 +1,9 @@ |
2221 | +gnome-keyring (3.15.90-0ubuntu1) vivid; urgency=medium |
2222 | + |
2223 | + * New upstream bugfix release. |
2224 | + |
2225 | + -- Jackson Doak <noskcaj@ubuntu.com> Sat, 28 Feb 2015 06:42:02 +1100 |
2226 | + |
2227 | gnome-keyring (3.14.0-1ubuntu2) vivid; urgency=medium |
2228 | |
2229 | * Fix the gpg/ssh agent check syntax. Thanks to Sergey Romanov (LP: |
2230 | |
2231 | === modified file 'egg/egg-asn1x.c' |
2232 | --- egg/egg-asn1x.c 2014-12-06 18:47:09 +0000 |
2233 | +++ egg/egg-asn1x.c 2015-02-27 19:55:06 +0000 |
2234 | @@ -2765,7 +2765,7 @@ |
2235 | |
2236 | /* Encode zero characters */ |
2237 | anode_clr_value (node); |
2238 | - anode_set_value (node, g_bytes_new_static ("", 0)); |
2239 | + anode_take_value (node, g_bytes_new_static ("", 0)); |
2240 | } |
2241 | |
2242 | GQuark |
2243 | @@ -2828,7 +2828,7 @@ |
2244 | anode_write_integer_ulong (val, data, &n_data); |
2245 | |
2246 | anode_clr_value (node); |
2247 | - anode_set_value (node, g_bytes_new_take (data, n_data)); |
2248 | + anode_take_value (node, g_bytes_new_take (data, n_data)); |
2249 | } |
2250 | |
2251 | gboolean |
2252 | @@ -2979,7 +2979,7 @@ |
2253 | } |
2254 | |
2255 | anode_clr_value (node); |
2256 | - anode_set_value (node, value); |
2257 | + anode_take_value (node, value); |
2258 | |
2259 | an = node->data; |
2260 | an->guarantee_unsigned = 0; |
2261 | @@ -3003,7 +3003,7 @@ |
2262 | g_return_if_fail (value != NULL); |
2263 | g_return_if_fail (anode_def_type (node) == EGG_ASN1X_INTEGER); |
2264 | |
2265 | - anode_set_value (node, value); |
2266 | + anode_take_value (node, value); |
2267 | an = node->data; |
2268 | an->guarantee_unsigned = 1; |
2269 | } |
2270 | @@ -3151,6 +3151,7 @@ |
2271 | |
2272 | /* A failure, set the message manually so it doesn't get a prefix */ |
2273 | } else { |
2274 | + atlv_free (tlv); |
2275 | an = node->data; |
2276 | g_free (an->failure); |
2277 | an->failure = g_strdup (msg); |
2278 | @@ -3282,8 +3283,8 @@ |
2279 | type == EGG_ASN1X_UTF8_STRING || |
2280 | type == EGG_ASN1X_VISIBLE_STRING); |
2281 | |
2282 | - anode_set_value (node, g_bytes_new_with_free_func (data, n_data, |
2283 | - destroy, data)); |
2284 | + anode_take_value (node, g_bytes_new_with_free_func (data, n_data, |
2285 | + destroy, data)); |
2286 | } |
2287 | |
2288 | void |
2289 | @@ -3307,7 +3308,7 @@ |
2290 | type == EGG_ASN1X_UTF8_STRING || |
2291 | type == EGG_ASN1X_VISIBLE_STRING); |
2292 | |
2293 | - anode_set_value (node, g_bytes_ref (bytes)); |
2294 | + anode_set_value (node, bytes); |
2295 | } |
2296 | |
2297 | GBytes * |
2298 | |
2299 | === modified file 'egg/egg-cleanup.c' |
2300 | --- egg/egg-cleanup.c 2014-04-06 23:26:34 +0000 |
2301 | +++ egg/egg-cleanup.c 2015-02-27 19:55:06 +0000 |
2302 | @@ -52,6 +52,7 @@ |
2303 | cleanup = (EggCleanup*)l->data; |
2304 | if (cleanup->notify == notify && cleanup->user_data == user_data) { |
2305 | registered_cleanups = g_slist_remove (registered_cleanups, cleanup); |
2306 | + g_free (cleanup); |
2307 | break; |
2308 | } |
2309 | } |
2310 | |
2311 | === modified file 'egg/egg-hkdf.c' |
2312 | --- egg/egg-hkdf.c 2014-04-06 23:26:34 +0000 |
2313 | +++ egg/egg-hkdf.c 2015-02-27 19:55:06 +0000 |
2314 | @@ -102,6 +102,7 @@ |
2315 | break; |
2316 | } |
2317 | |
2318 | + gcry_md_close (md2); |
2319 | g_free (alloc); |
2320 | gcry_free (buffer); |
2321 | return TRUE; |
2322 | |
2323 | === modified file 'egg/test-asn1.c' |
2324 | --- egg/test-asn1.c 2014-04-06 23:26:34 +0000 |
2325 | +++ egg/test-asn1.c 2015-02-27 19:55:06 +0000 |
2326 | @@ -2385,6 +2385,7 @@ |
2327 | asn = egg_asn1x_create_quark (test_asn1_tab, g_quark_from_static_string ("1.5.13")); |
2328 | g_assert (asn != NULL); |
2329 | g_assert_cmpstr (egg_asn1x_name (asn), ==, "TestIntegers"); |
2330 | + egg_asn1x_destroy (asn); |
2331 | } |
2332 | |
2333 | static void |
2334 | |
2335 | === modified file 'egg/test-dn.c' |
2336 | --- egg/test-dn.c 2014-04-06 23:26:34 +0000 |
2337 | +++ egg/test-dn.c 2015-02-27 19:55:06 +0000 |
2338 | @@ -98,6 +98,7 @@ |
2339 | text = egg_dn_print_value (oid, asn); |
2340 | g_assert_cmpstr (text, ==, "Thawte Personal Premium CA"); |
2341 | g_free (text); |
2342 | + g_bytes_unref (bytes); |
2343 | |
2344 | /* Unknown oid */ |
2345 | oid = g_quark_from_static_string ("1.1.1.1.1.1"); |
2346 | |
2347 | === modified file 'egg/test-padding.c' |
2348 | --- egg/test-padding.c 2014-04-06 23:26:34 +0000 |
2349 | +++ egg/test-padding.c 2015-02-27 19:55:06 +0000 |
2350 | @@ -114,6 +114,7 @@ |
2351 | g_assert (result[5] == 0x00); |
2352 | g_assert (result[6] == 'T'); |
2353 | g_assert (result[7] == 'E'); |
2354 | + g_free (vesult); |
2355 | } |
2356 | |
2357 | static void |
2358 | |
2359 | === modified file 'egg/test-spawn.c' |
2360 | --- egg/test-spawn.c 2014-04-06 23:26:34 +0000 |
2361 | +++ egg/test-spawn.c 2015-02-27 19:55:06 +0000 |
2362 | @@ -188,6 +188,8 @@ |
2363 | g_assert (data.completed); |
2364 | g_assert_cmpstr (data.output, ==, "80 81 82 83 84\n"); |
2365 | g_assert_cmpstr (data.error, ==, "1\n2\n3\n4\n5\n"); |
2366 | + g_free (data.error); |
2367 | + g_free (data.output); |
2368 | } |
2369 | |
2370 | static void |
2371 | @@ -233,6 +235,8 @@ |
2372 | g_assert (data.completed); |
2373 | g_assert_cmpstr (data.output, ==, "80 81 82 83 84\n"); |
2374 | g_assert_cmpstr (data.error, ==, "1\n2\n3\n4\n5\n"); |
2375 | + g_free (data.error); |
2376 | + g_free (data.output); |
2377 | } |
2378 | |
2379 | static void |
2380 | @@ -259,6 +263,8 @@ |
2381 | g_assert (data.finalized); |
2382 | g_assert (data.completed); |
2383 | g_assert (!data.output); |
2384 | + g_free (data.error); |
2385 | + g_free (data.output); |
2386 | } |
2387 | |
2388 | static void |
2389 | |
2390 | === modified file 'pam/test-pam.c' |
2391 | --- pam/test-pam.c 2014-04-06 23:26:34 +0000 |
2392 | +++ pam/test-pam.c 2015-02-27 19:55:06 +0000 |
2393 | @@ -149,6 +149,7 @@ |
2394 | return; |
2395 | } |
2396 | } else if (g_error_matches (error, G_FILE_ERROR, G_FILE_ERROR_NOENT)) { |
2397 | + g_error_free (error); |
2398 | skip_test (test, "missing test pam config"); |
2399 | return; |
2400 | } |
2401 | |
2402 | === modified file 'pkcs11/gkm/gkm-attributes.c' |
2403 | --- pkcs11/gkm/gkm-attributes.c 2014-04-06 23:26:34 +0000 |
2404 | +++ pkcs11/gkm/gkm-attributes.c 2015-02-27 19:55:06 +0000 |
2405 | @@ -359,6 +359,7 @@ |
2406 | g_checksum_update (checksum, data, n_data); |
2407 | result = attr->ulValueLen; |
2408 | g_checksum_get_digest (checksum, attr->pValue, &result); |
2409 | + g_checksum_free (checksum); |
2410 | attr->ulValueLen = result; |
2411 | return CKR_OK; |
2412 | } |
2413 | |
2414 | === modified file 'pkcs11/gkm/gkm-credential.c' |
2415 | --- pkcs11/gkm/gkm-credential.c 2014-12-06 18:47:09 +0000 |
2416 | +++ pkcs11/gkm/gkm-credential.c 2015-02-27 19:55:06 +0000 |
2417 | @@ -209,6 +209,10 @@ |
2418 | g_object_weak_unref (G_OBJECT (self->pv->object), object_went_away, self); |
2419 | self->pv->object = NULL; |
2420 | |
2421 | + if (self->pv->secret) |
2422 | + g_object_unref (G_OBJECT (self->pv->secret)); |
2423 | + self->pv->secret = NULL; |
2424 | + |
2425 | clear_data (self); |
2426 | |
2427 | G_OBJECT_CLASS (gkm_credential_parent_class)->dispose (obj); |
2428 | |
2429 | === modified file 'pkcs11/gkm/gkm-data-asn1.c' |
2430 | --- pkcs11/gkm/gkm-data-asn1.c 2014-04-06 23:26:34 +0000 |
2431 | +++ pkcs11/gkm/gkm-data-asn1.c 2015-02-27 19:55:06 +0000 |
2432 | @@ -43,6 +43,7 @@ |
2433 | /* Automatically stores in secure memory if DER data is secure */ |
2434 | sz = g_bytes_get_size (buf); |
2435 | gcry = gcry_mpi_scan (mpi, GCRYMPI_FMT_STD, g_bytes_get_data (buf, NULL), sz, &sz); |
2436 | + g_bytes_unref (buf); |
2437 | if (gcry != 0) |
2438 | return FALSE; |
2439 | |
2440 | |
2441 | === modified file 'pkcs11/gkm/gkm-mock.c' |
2442 | --- pkcs11/gkm/gkm-mock.c 2014-04-06 23:26:34 +0000 |
2443 | +++ pkcs11/gkm/gkm-mock.c 2015-02-27 19:55:06 +0000 |
2444 | @@ -72,6 +72,7 @@ |
2445 | static guint unique_identifier = 100; |
2446 | static GHashTable *the_sessions = NULL; |
2447 | static GHashTable *the_objects = NULL; |
2448 | +static GArray *the_credential_template = NULL; |
2449 | |
2450 | enum { |
2451 | PRIVATE_KEY_CAPITALIZE = 3, |
2452 | @@ -260,6 +261,7 @@ |
2453 | n_the_pin = strlen (the_pin); |
2454 | the_sessions = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, free_session); |
2455 | the_objects = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, (GDestroyNotify)gkm_template_free); |
2456 | + the_credential_template = gkm_template_new (NULL, 0); |
2457 | |
2458 | /* Our token object */ |
2459 | attrs = gkm_template_new (NULL, 0); |
2460 | @@ -337,6 +339,9 @@ |
2461 | g_hash_table_destroy (the_sessions); |
2462 | the_sessions = NULL; |
2463 | |
2464 | + gkm_template_free (the_credential_template); |
2465 | + the_credential_template = NULL; |
2466 | + |
2467 | g_free (the_pin); |
2468 | return CKR_OK; |
2469 | } |
2470 | @@ -679,9 +684,12 @@ |
2471 | g_return_val_if_fail (session, CKR_SESSION_HANDLE_INVALID); |
2472 | |
2473 | old = g_strndup ((gchar*)pOldPin, ulOldLen); |
2474 | - if (!old || !g_str_equal (old, the_pin)) |
2475 | + if (!old || !g_str_equal (old, the_pin)) { |
2476 | + g_free (old); |
2477 | return CKR_PIN_INCORRECT; |
2478 | + } |
2479 | |
2480 | + g_free (old); |
2481 | g_free (the_pin); |
2482 | the_pin = g_strndup ((gchar*)pNewPin, ulNewLen); |
2483 | n_the_pin = ulNewLen; |
2484 | @@ -864,6 +872,10 @@ |
2485 | |
2486 | for (i = 0; i < ulCount; ++i) { |
2487 | result = pTemplate + i; |
2488 | + if (result->type == CKA_G_CREDENTIAL_TEMPLATE) { |
2489 | + gkm_attribute_set_template (result, the_credential_template); |
2490 | + continue; |
2491 | + } |
2492 | attr = gkm_template_find (attrs, result->type); |
2493 | if (!attr) { |
2494 | result->ulValueLen = (CK_ULONG)-1; |
2495 | @@ -907,8 +919,22 @@ |
2496 | return CKR_OBJECT_HANDLE_INVALID; |
2497 | } |
2498 | |
2499 | - for (i = 0; i < ulCount; ++i) |
2500 | - gkm_template_set (attrs, pTemplate + i); |
2501 | + for (i = 0; i < ulCount; ++i) { |
2502 | + CK_ATTRIBUTE_PTR attr = pTemplate + i; |
2503 | + |
2504 | + if (attr->type == CKA_G_CREDENTIAL_TEMPLATE) { |
2505 | + CK_RV rv; |
2506 | + GArray *template; |
2507 | + |
2508 | + rv = gkm_attribute_get_template (attr, &template); |
2509 | + if (rv != CKR_OK) |
2510 | + return CKR_OBJECT_HANDLE_INVALID; |
2511 | + gkm_template_free(the_credential_template); |
2512 | + the_credential_template = template; |
2513 | + } else { |
2514 | + gkm_template_set (attrs, attr); |
2515 | + } |
2516 | + } |
2517 | |
2518 | return CKR_OK; |
2519 | } |
2520 | |
2521 | === modified file 'pkcs11/gkm/test-data-asn1.c' |
2522 | --- pkcs11/gkm/test-data-asn1.c 2014-09-23 20:20:23 +0000 |
2523 | +++ pkcs11/gkm/test-data-asn1.c 2015-02-27 19:55:06 +0000 |
2524 | @@ -99,11 +99,14 @@ |
2525 | g_assert (asn != NULL); |
2526 | |
2527 | ret = gkm_data_asn1_read_mpi (egg_asn1x_node (asn, "mpi", NULL), &mpt); |
2528 | + egg_asn1x_destroy (asn); |
2529 | g_assert ("couldn't read mpi from asn1" && ret); |
2530 | g_assert ("mpi returned is null" && mpt != NULL); |
2531 | g_assert ("mpi is wrong number" && gcry_mpi_cmp (mpi, mpt) == 0); |
2532 | |
2533 | g_bytes_unref (data); |
2534 | + gcry_mpi_release (mpi); |
2535 | + gcry_mpi_release (mpt); |
2536 | } |
2537 | |
2538 | int |
2539 | |
2540 | === modified file 'pkcs11/gkm/test-data-der.c' |
2541 | --- pkcs11/gkm/test-data-der.c 2014-04-06 23:26:34 +0000 |
2542 | +++ pkcs11/gkm/test-data-der.c 2015-02-27 19:55:06 +0000 |
2543 | @@ -111,6 +111,7 @@ |
2544 | /* Now compare them */ |
2545 | g_assert ("key parsed differently" && compare_keys (key, sexp)); |
2546 | |
2547 | + gcry_sexp_release (sexp); |
2548 | g_bytes_unref (data); |
2549 | } |
2550 | |
2551 | @@ -154,6 +155,8 @@ |
2552 | g_return_if_fail (gcry == 0); |
2553 | |
2554 | test_der_public (key); |
2555 | + |
2556 | + gcry_sexp_release (key); |
2557 | } |
2558 | |
2559 | static void |
2560 | @@ -166,6 +169,8 @@ |
2561 | g_return_if_fail (gcry == 0); |
2562 | |
2563 | test_der_public (key); |
2564 | + |
2565 | + gcry_sexp_release (key); |
2566 | } |
2567 | |
2568 | static void |
2569 | @@ -188,6 +193,7 @@ |
2570 | /* Now compare them */ |
2571 | g_assert ("key parsed differently" && compare_keys (key, sexp)); |
2572 | |
2573 | + gcry_sexp_release (sexp); |
2574 | g_bytes_unref (data); |
2575 | } |
2576 | |
2577 | @@ -201,6 +207,8 @@ |
2578 | g_return_if_fail (gcry == 0); |
2579 | |
2580 | test_der_private (key); |
2581 | + |
2582 | + gcry_sexp_release (key); |
2583 | } |
2584 | |
2585 | static void |
2586 | @@ -213,6 +221,8 @@ |
2587 | g_return_if_fail (gcry == 0); |
2588 | |
2589 | test_der_private (key); |
2590 | + |
2591 | + gcry_sexp_release (key); |
2592 | } |
2593 | |
2594 | static void |
2595 | @@ -240,6 +250,7 @@ |
2596 | /* Now compare them */ |
2597 | g_assert ("key parsed differently" && compare_keys (skey, pkey)); |
2598 | |
2599 | + gcry_sexp_release (skey); |
2600 | g_bytes_unref (params); |
2601 | g_bytes_unref (key); |
2602 | } |
2603 | @@ -332,6 +343,8 @@ |
2604 | |
2605 | if (res == GKM_DATA_SUCCESS) |
2606 | gcry_sexp_release (sexp); |
2607 | + |
2608 | + egg_asn1x_destroy (asn1); |
2609 | g_bytes_unref (keydata); |
2610 | } |
2611 | |
2612 | |
2613 | === modified file 'pkcs11/gkm/test-secret.c' |
2614 | --- pkcs11/gkm/test-secret.c 2014-04-06 23:26:34 +0000 |
2615 | +++ pkcs11/gkm/test-secret.c 2015-02-27 19:55:06 +0000 |
2616 | @@ -185,6 +185,9 @@ |
2617 | g_object_unref (one); |
2618 | one = gkm_secret_new_from_password ("other"); |
2619 | g_assert (!gkm_secret_equal (one, two)); |
2620 | + |
2621 | + g_object_unref (one); |
2622 | + g_object_unref (two); |
2623 | } |
2624 | |
2625 | int |
2626 | |
2627 | === modified file 'pkcs11/gkm/test-sexp.c' |
2628 | --- pkcs11/gkm/test-sexp.c 2014-04-06 23:26:34 +0000 |
2629 | +++ pkcs11/gkm/test-sexp.c 2015-02-27 19:55:06 +0000 |
2630 | @@ -95,10 +95,12 @@ |
2631 | g_assert (algorithm == GCRY_PK_RSA); |
2632 | g_assert (is_priv == TRUE); |
2633 | g_assert (sexp != NULL); |
2634 | + gcry_sexp_release (sexp); |
2635 | |
2636 | ret = gkm_sexp_extract_mpi (test->rsakey, &mpi, "p", NULL); |
2637 | g_assert (ret); |
2638 | g_assert (mpi != NULL); |
2639 | + gcry_mpi_release (mpi); |
2640 | } |
2641 | |
2642 | static void |
2643 | |
2644 | === modified file 'pkcs11/gnome2-store/gkm-gnome2-file.c' |
2645 | --- pkcs11/gnome2-store/gkm-gnome2-file.c 2014-12-06 18:47:09 +0000 |
2646 | +++ pkcs11/gnome2-store/gkm-gnome2-file.c 2015-02-27 19:55:06 +0000 |
2647 | @@ -127,7 +127,7 @@ |
2648 | static GHashTable* |
2649 | entries_new (void) |
2650 | { |
2651 | - return g_hash_table_new_full (g_str_hash, g_str_equal, NULL, (GDestroyNotify)g_hash_table_unref); |
2652 | + return g_hash_table_new_full (g_str_hash, g_str_equal, (GDestroyNotify)g_free, (GDestroyNotify)g_hash_table_unref); |
2653 | } |
2654 | |
2655 | static gboolean |
2656 | @@ -309,6 +309,7 @@ |
2657 | gsize n_hash, hash_offset; |
2658 | guint32 length; |
2659 | int algo; |
2660 | + gboolean valid; |
2661 | |
2662 | g_assert (buffer); |
2663 | g_assert (offset); |
2664 | @@ -337,10 +338,10 @@ |
2665 | |
2666 | check = g_malloc0 (n_hash); |
2667 | gcry_md_hash_buffer (algo, check, buffer->buf, length); |
2668 | - if (memcmp (check, hash, n_hash) != 0) |
2669 | - return FALSE; |
2670 | + valid = (memcmp (check, hash, n_hash) == 0); |
2671 | + g_free (check); |
2672 | |
2673 | - return TRUE; |
2674 | + return valid; |
2675 | } |
2676 | |
2677 | static gboolean |
2678 | @@ -362,31 +363,24 @@ |
2679 | n_block = gcry_cipher_get_algo_blklen (calgo); |
2680 | g_return_val_if_fail (n_block, FALSE); |
2681 | |
2682 | - /* Allocate memory for the keys */ |
2683 | - key = gcry_malloc_secure (n_key); |
2684 | - g_return_val_if_fail (key, FALSE); |
2685 | - iv = g_malloc0 (n_block); |
2686 | - |
2687 | password = gkm_secret_get_password (login, &n_password); |
2688 | |
2689 | if (!egg_symkey_generate_simple (calgo, halgo, password, n_password, |
2690 | salt, n_salt, iterations, &key, &iv)) { |
2691 | - gcry_free (key); |
2692 | - g_free (iv); |
2693 | return FALSE; |
2694 | } |
2695 | |
2696 | gcry = gcry_cipher_open (cipher, calgo, GCRY_CIPHER_MODE_CBC, 0); |
2697 | if (gcry) { |
2698 | g_warning ("couldn't create cipher context: %s", gcry_strerror (gcry)); |
2699 | - gcry_free (key); |
2700 | + egg_secure_free (key); |
2701 | g_free (iv); |
2702 | return FALSE; |
2703 | } |
2704 | |
2705 | gcry = gcry_cipher_setkey (*cipher, key, n_key); |
2706 | g_return_val_if_fail (!gcry, FALSE); |
2707 | - gcry_free (key); |
2708 | + egg_secure_free (key); |
2709 | |
2710 | gcry = gcry_cipher_setiv (*cipher, iv, n_block); |
2711 | g_return_val_if_fail (!gcry, FALSE); |
2712 | |
2713 | === modified file 'pkcs11/gnome2-store/gkm-gnome2-storage.c' |
2714 | --- pkcs11/gnome2-store/gkm-gnome2-storage.c 2014-12-06 18:47:09 +0000 |
2715 | +++ pkcs11/gnome2-store/gkm-gnome2-storage.c 2015-02-27 19:55:06 +0000 |
2716 | @@ -916,6 +916,10 @@ |
2717 | g_object_unref (self->manager); |
2718 | self->manager = NULL; |
2719 | |
2720 | + if (self->login) |
2721 | + g_object_unref (self->login); |
2722 | + self->login = NULL; |
2723 | + |
2724 | g_signal_handlers_disconnect_by_func (self->file, data_file_entry_added, self); |
2725 | g_signal_handlers_disconnect_by_func (self->file, data_file_entry_changed, self); |
2726 | g_signal_handlers_disconnect_by_func (self->file, data_file_entry_removed, self); |
2727 | |
2728 | === modified file 'pkcs11/gnome2-store/test-import.c' |
2729 | --- pkcs11/gnome2-store/test-import.c 2014-04-06 23:26:34 +0000 |
2730 | +++ pkcs11/gnome2-store/test-import.c 2015-02-27 19:55:06 +0000 |
2731 | @@ -62,6 +62,7 @@ |
2732 | |
2733 | test->funcs = gkm_gnome2_store_get_functions (); |
2734 | rv = (test->funcs->C_Initialize) (&args); |
2735 | + g_free (args.pReserved); |
2736 | gkm_assert_cmprv (rv, ==, CKR_OK); |
2737 | |
2738 | /* And now need to log in */ |
2739 | |
2740 | === modified file 'pkcs11/secret-store/gkm-secret-item.c' |
2741 | --- pkcs11/secret-store/gkm-secret-item.c 2014-04-06 23:26:34 +0000 |
2742 | +++ pkcs11/secret-store/gkm-secret-item.c 2015-02-27 19:55:06 +0000 |
2743 | @@ -391,6 +391,9 @@ |
2744 | g_hash_table_unref (self->fields); |
2745 | self->fields = NULL; |
2746 | |
2747 | + g_free (self->schema); |
2748 | + self->schema = NULL; |
2749 | + |
2750 | G_OBJECT_CLASS (gkm_secret_item_parent_class)->finalize (obj); |
2751 | } |
2752 | |
2753 | |
2754 | === modified file 'pkcs11/secret-store/gkm-secret-search.c' |
2755 | --- pkcs11/secret-store/gkm-secret-search.c 2014-12-06 18:47:09 +0000 |
2756 | +++ pkcs11/secret-store/gkm-secret-search.c 2015-02-27 19:55:06 +0000 |
2757 | @@ -247,6 +247,7 @@ |
2758 | "schema-name", schema_name, |
2759 | "collection-id", identifier, |
2760 | NULL); |
2761 | + g_free (identifier); |
2762 | |
2763 | /* Load any new items or collections */ |
2764 | gkm_module_refresh_token (module); |
2765 | |
2766 | === modified file 'pkcs11/secret-store/gkm-secret-textual.c' |
2767 | --- pkcs11/secret-store/gkm-secret-textual.c 2014-12-06 18:47:09 +0000 |
2768 | +++ pkcs11/secret-store/gkm-secret-textual.c 2015-02-27 19:55:06 +0000 |
2769 | @@ -118,6 +118,7 @@ |
2770 | g_free (groupname); |
2771 | ++index; |
2772 | } |
2773 | + g_list_free (names); |
2774 | } |
2775 | |
2776 | static void |
2777 | |
2778 | === modified file 'pkcs11/secret-store/test-secret-binary.c' |
2779 | --- pkcs11/secret-store/test-secret-binary.c 2014-04-06 23:26:34 +0000 |
2780 | +++ pkcs11/secret-store/test-secret-binary.c 2015-02-27 19:55:06 +0000 |
2781 | @@ -156,6 +156,7 @@ |
2782 | /* Try parsing it again */ |
2783 | res = gkm_secret_binary_read (test->collection, test->sdata, data, n_data); |
2784 | g_assert (res == GKM_DATA_SUCCESS); |
2785 | + g_free (data); |
2786 | } |
2787 | |
2788 | static void |
2789 | |
2790 | === modified file 'pkcs11/secret-store/test-secret-textual.c' |
2791 | --- pkcs11/secret-store/test-secret-textual.c 2014-04-06 23:26:34 +0000 |
2792 | +++ pkcs11/secret-store/test-secret-textual.c 2015-02-27 19:55:06 +0000 |
2793 | @@ -148,6 +148,7 @@ |
2794 | /* Try parsing it again */ |
2795 | res = gkm_secret_textual_read (test->collection, test->sdata, data, n_data); |
2796 | g_assert (res == GKM_DATA_SUCCESS); |
2797 | + g_free (data); |
2798 | } |
2799 | |
2800 | static void |
2801 | |
2802 | === modified file 'pkcs11/wrap-layer/gkm-wrap-prompt.c' |
2803 | --- pkcs11/wrap-layer/gkm-wrap-prompt.c 2014-04-06 23:26:34 +0000 |
2804 | +++ pkcs11/wrap-layer/gkm-wrap-prompt.c 2015-02-27 19:55:06 +0000 |
2805 | @@ -904,14 +904,30 @@ |
2806 | } |
2807 | |
2808 | static void |
2809 | -gkm_wrap_prompt_finalize (GObject *obj) |
2810 | +gkm_wrap_prompt_clear_prompt_data (GkmWrapPrompt *self) |
2811 | { |
2812 | - GkmWrapPrompt *self = GKM_WRAP_PROMPT (obj); |
2813 | - |
2814 | if (self->destroy_data && self->prompt_data) |
2815 | (self->destroy_data) (self->prompt_data); |
2816 | self->destroy_data = NULL; |
2817 | self->prompt_data = NULL; |
2818 | +} |
2819 | + |
2820 | +static void |
2821 | +gkm_wrap_prompt_set_prompt_data (GkmWrapPrompt *self, |
2822 | + gpointer prompt_data, |
2823 | + GDestroyNotify destroy_data) |
2824 | +{ |
2825 | + gkm_wrap_prompt_clear_prompt_data (self); |
2826 | + self->destroy_data = destroy_data; |
2827 | + self->prompt_data = prompt_data; |
2828 | +} |
2829 | + |
2830 | +static void |
2831 | +gkm_wrap_prompt_finalize (GObject *obj) |
2832 | +{ |
2833 | + GkmWrapPrompt *self = GKM_WRAP_PROMPT (obj); |
2834 | + |
2835 | + gkm_wrap_prompt_clear_prompt_data (self); |
2836 | |
2837 | while (!g_queue_is_empty(&self->pool)) |
2838 | g_free (g_queue_pop_head (&self->pool)); |
2839 | @@ -934,7 +950,7 @@ |
2840 | typedef struct _CredentialPrompt { |
2841 | GArray *template; |
2842 | CK_ULONG n_template; |
2843 | - const gchar *password; |
2844 | + gchar *password; |
2845 | } CredentialPrompt; |
2846 | |
2847 | static void |
2848 | @@ -942,6 +958,7 @@ |
2849 | { |
2850 | CredentialPrompt *data = user_data; |
2851 | g_array_free (data->template, TRUE); |
2852 | + egg_secure_strfree (data->password); |
2853 | g_slice_free (CredentialPrompt, data); |
2854 | } |
2855 | |
2856 | @@ -977,8 +994,8 @@ |
2857 | NULL); |
2858 | |
2859 | /* Build up the prompt */ |
2860 | - self->prompt_data = data = g_slice_new0 (CredentialPrompt); |
2861 | - self->destroy_data = credential_prompt_free; |
2862 | + data = g_slice_new0 (CredentialPrompt); |
2863 | + gkm_wrap_prompt_set_prompt_data (self, data, credential_prompt_free); |
2864 | self->module = module; |
2865 | self->session = session; |
2866 | self->object = object; |
2867 | @@ -1017,6 +1034,7 @@ |
2868 | attrs = get_attributes_from_object (self, &n_attrs); |
2869 | g_return_val_if_fail (attrs, FALSE); |
2870 | |
2871 | + egg_secure_strfree (data->password); |
2872 | data->password = NULL; |
2873 | |
2874 | if (self->iteration == 0) { |
2875 | @@ -1028,6 +1046,7 @@ |
2876 | } |
2877 | |
2878 | if (!data->password) { |
2879 | + const char *password; |
2880 | setup_unlock_prompt (self, attrs, n_attrs, self->iteration == 1); |
2881 | |
2882 | /* Now load up the unlock options into the prompt*/ |
2883 | @@ -1039,14 +1058,15 @@ |
2884 | |
2885 | ++(self->iteration); |
2886 | |
2887 | - data->password = gkm_wrap_prompt_request_password (self); |
2888 | - if (data->password == NULL) { |
2889 | + password = gkm_wrap_prompt_request_password (self); |
2890 | + if (password == NULL) { |
2891 | if (error != NULL) { |
2892 | g_warning ("couldn't prompt for password: %s", egg_error_message (error)); |
2893 | g_error_free (error); |
2894 | } |
2895 | return FALSE; |
2896 | } |
2897 | + data->password = egg_secure_strdup (password); |
2898 | } |
2899 | |
2900 | /* Truncate any extra options off the end of template */ |
2901 | @@ -1173,7 +1193,7 @@ |
2902 | CK_UTF8CHAR_PTR *pin, CK_ULONG *n_pin) |
2903 | { |
2904 | CK_TOKEN_INFO tinfo; |
2905 | - const gchar *password; |
2906 | + gchar *password; |
2907 | |
2908 | g_assert (GKM_IS_WRAP_PROMPT (self)); |
2909 | g_assert (self->module); |
2910 | @@ -1185,11 +1205,12 @@ |
2911 | |
2912 | setup_init_token (self, &tinfo); |
2913 | |
2914 | - password = gkm_wrap_prompt_request_password (self); |
2915 | + password = (char *)gkm_wrap_prompt_request_password (self); |
2916 | if (password == NULL) |
2917 | return FALSE; |
2918 | |
2919 | - self->prompt_data = (gpointer)password; |
2920 | + g_assert (self->destroy_data == NULL); |
2921 | + gkm_wrap_prompt_set_prompt_data (self, password, NULL); |
2922 | *pin = (gpointer)password; |
2923 | *n_pin = strlen (password); |
2924 | return TRUE; |
2925 | @@ -1314,8 +1335,9 @@ |
2926 | /* Build up the prompt */ |
2927 | self->module = module; |
2928 | self->session = session; |
2929 | - self->destroy_data = set_pin_prompt_free; |
2930 | - self->prompt_data = g_slice_new0 (SetPinPrompt); |
2931 | + gkm_wrap_prompt_set_prompt_data (self, |
2932 | + g_slice_new0 (SetPinPrompt), |
2933 | + set_pin_prompt_free); |
2934 | |
2935 | return self; |
2936 | } |
2937 | @@ -1438,7 +1460,7 @@ |
2938 | login_prompt_do_specific (GkmWrapPrompt *self, CK_RV last_result, |
2939 | CK_UTF8CHAR_PTR *pin, CK_ULONG *n_pin) |
2940 | { |
2941 | - const gchar *password = NULL; |
2942 | + gchar *password = NULL; |
2943 | CK_ATTRIBUTE_PTR attrs; |
2944 | CK_ULONG n_attrs; |
2945 | |
2946 | @@ -1451,6 +1473,9 @@ |
2947 | if (self->iteration == 0) { |
2948 | ++(self->iteration); |
2949 | password = auto_unlock_lookup_object (attrs, n_attrs); |
2950 | + if (password) |
2951 | + gkm_wrap_prompt_set_prompt_data (self, password, |
2952 | + (GDestroyNotify)egg_secure_strfree); |
2953 | |
2954 | } else if (self->iteration == 1 && last_result == CKR_PIN_INCORRECT) { |
2955 | auto_unlock_remove_object (attrs, n_attrs); |
2956 | @@ -1459,12 +1484,12 @@ |
2957 | if (!password) { |
2958 | setup_unlock_prompt (self, attrs, n_attrs, self->iteration == 1); |
2959 | |
2960 | - password = gkm_wrap_prompt_request_password (self); |
2961 | + password = (char *)gkm_wrap_prompt_request_password (self); |
2962 | if (password == NULL) |
2963 | return FALSE; |
2964 | + gkm_wrap_prompt_set_prompt_data (self, password, NULL); |
2965 | } |
2966 | |
2967 | - self->prompt_data = (gpointer)password; |
2968 | *pin = (guchar *)password; |
2969 | *n_pin = strlen (password); |
2970 | return TRUE; |
2971 | @@ -1477,7 +1502,8 @@ |
2972 | CK_ULONG n_attrs; |
2973 | |
2974 | g_assert (GKM_IS_WRAP_PROMPT (self)); |
2975 | - g_assert (self->destroy_data == NULL); |
2976 | + g_assert (self->destroy_data == NULL || |
2977 | + self->destroy_data == (GDestroyNotify)egg_secure_strfree); |
2978 | |
2979 | /* Possibly save away auto unlock */ |
2980 | if (call_result == CKR_OK && auto_unlock_should_attach (self)) { |
2981 | @@ -1510,7 +1536,7 @@ |
2982 | CK_UTF8CHAR_PTR *pin, CK_ULONG *n_pin) |
2983 | { |
2984 | CK_TOKEN_INFO tinfo; |
2985 | - const gchar *password = NULL; |
2986 | + gchar *password = NULL; |
2987 | |
2988 | g_assert (GKM_IS_WRAP_PROMPT (self)); |
2989 | g_assert (self->module); |
2990 | @@ -1523,6 +1549,9 @@ |
2991 | if (self->iteration == 0) { |
2992 | ++(self->iteration); |
2993 | password = auto_unlock_lookup_token (&tinfo); |
2994 | + if (password) |
2995 | + gkm_wrap_prompt_set_prompt_data (self, password, |
2996 | + (GDestroyNotify)egg_secure_strfree); |
2997 | |
2998 | } else if (self->iteration == 1 && last_result == CKR_PIN_INCORRECT) { |
2999 | auto_unlock_remove_token (&tinfo); |
3000 | @@ -1531,12 +1560,12 @@ |
3001 | if (!password) { |
3002 | setup_unlock_token (self, &tinfo); |
3003 | |
3004 | - password = gkm_wrap_prompt_request_password (self); |
3005 | + password = (char *)gkm_wrap_prompt_request_password (self); |
3006 | if (password == NULL) |
3007 | return FALSE; |
3008 | + gkm_wrap_prompt_set_prompt_data (self, password, NULL); |
3009 | } |
3010 | |
3011 | - self->prompt_data = (gpointer)password; |
3012 | *pin = (guchar *)password; |
3013 | *n_pin = strlen (password); |
3014 | return TRUE; |
3015 | @@ -1548,7 +1577,8 @@ |
3016 | CK_TOKEN_INFO tinfo; |
3017 | |
3018 | g_assert (GKM_IS_WRAP_PROMPT (self)); |
3019 | - g_assert (self->destroy_data == NULL); |
3020 | + g_assert (self->destroy_data == NULL || |
3021 | + self->destroy_data == (GDestroyNotify)egg_secure_strfree); |
3022 | |
3023 | /* Save the options, and possibly auto unlock */ |
3024 | if (call_result == CKR_OK && auto_unlock_should_attach (self)) { |
3025 | |
3026 | === modified file 'pkcs11/wrap-layer/mock-secret-store.c' |
3027 | --- pkcs11/wrap-layer/mock-secret-store.c 2014-04-06 23:26:34 +0000 |
3028 | +++ pkcs11/wrap-layer/mock-secret-store.c 2015-02-27 19:55:06 +0000 |
3029 | @@ -207,7 +207,7 @@ |
3030 | rv = gkm_mock_C_CreateObject (hSession, pTemplate, ulCount, phObject); |
3031 | |
3032 | if (template) |
3033 | - g_array_free (template, TRUE); |
3034 | + gkm_template_free (template); |
3035 | |
3036 | return rv; |
3037 | } |
3038 | |
3039 | === modified file 'pkcs11/xdg-store/gkm-xdg-assertion.c' |
3040 | --- pkcs11/xdg-store/gkm-xdg-assertion.c 2014-12-06 18:47:09 +0000 |
3041 | +++ pkcs11/xdg-store/gkm-xdg-assertion.c 2015-02-27 19:55:06 +0000 |
3042 | @@ -173,6 +173,8 @@ |
3043 | "purpose", purpose, |
3044 | "peer", peer, |
3045 | NULL); |
3046 | + g_free (purpose); |
3047 | + g_free (peer); |
3048 | |
3049 | /* Add the assertion to the trust object */ |
3050 | if (!gkm_transaction_get_failed (transaction)) { |
3051 | |
3052 | === modified file 'pkcs11/xdg-store/gkm-xdg-trust.c' |
3053 | --- pkcs11/xdg-store/gkm-xdg-trust.c 2014-04-06 23:26:34 +0000 |
3054 | +++ pkcs11/xdg-store/gkm-xdg-trust.c 2015-02-27 19:55:06 +0000 |
3055 | @@ -371,7 +371,7 @@ |
3056 | key = create_assertion_key (gkm_assertion_get_purpose (assertion), |
3057 | gkm_assertion_get_peer (assertion)); |
3058 | g_object_set_qdata_full (G_OBJECT (assertion), QDATA_ASSERTION_KEY, |
3059 | - g_bytes_ref (key), (GDestroyNotify)g_bytes_unref); |
3060 | + key, (GDestroyNotify)g_bytes_unref); |
3061 | } |
3062 | |
3063 | return key; |
3064 | @@ -439,6 +439,7 @@ |
3065 | if (!g_hash_table_steal (self->pv->assertions, key)) |
3066 | g_return_if_reached (); |
3067 | gkm_transaction_add (transaction, self, complete_remove_assertion, assertion); |
3068 | + g_bytes_unref (key); |
3069 | } |
3070 | } |
3071 | |
3072 | @@ -706,6 +707,10 @@ |
3073 | g_hash_table_destroy (self->pv->assertions); |
3074 | self->pv->assertions = NULL; |
3075 | |
3076 | + if (self->pv->bytes) |
3077 | + g_bytes_unref (self->pv->bytes); |
3078 | + self->pv->bytes = NULL; |
3079 | + |
3080 | G_OBJECT_CLASS (gkm_xdg_trust_parent_class)->finalize (obj); |
3081 | } |
3082 | |
3083 | @@ -875,7 +880,6 @@ |
3084 | remove_assertion_from_trust (self, previous, transaction); |
3085 | add_assertion_to_trust (self, assertion, transaction); |
3086 | |
3087 | - g_bytes_unref (key); |
3088 | } |
3089 | |
3090 | void |
3091 | |
3092 | === modified file 'pkcs11/xdg-store/test-xdg-module.c' |
3093 | --- pkcs11/xdg-store/test-xdg-module.c 2014-04-06 23:26:34 +0000 |
3094 | +++ pkcs11/xdg-store/test-xdg-module.c 2015-02-27 19:55:06 +0000 |
3095 | @@ -190,6 +190,7 @@ |
3096 | rv = gkm_session_C_CreateObject (test->session, attrs, G_N_ELEMENTS (attrs), &object); |
3097 | gkm_assert_cmprv (rv, ==, CKR_OK); |
3098 | gkm_assert_cmpulong (object, !=, 0); |
3099 | + g_free (data); |
3100 | } |
3101 | |
3102 | static void |
3103 | |
3104 | === modified file 'pkcs11/xdg-store/test-xdg-trust.c' |
3105 | --- pkcs11/xdg-store/test-xdg-trust.c 2014-04-06 23:26:34 +0000 |
3106 | +++ pkcs11/xdg-store/test-xdg-trust.c 2015-02-27 19:55:06 +0000 |
3107 | @@ -656,6 +656,7 @@ |
3108 | n_checksum = sizeof (checksum); |
3109 | g_checksum_get_digest (md, checksum, &n_checksum); |
3110 | g_assert (n_checksum == sizeof (checksum)); |
3111 | + g_checksum_free (md); |
3112 | |
3113 | rv = gkm_session_C_FindObjectsInit (test->session, lookup, G_N_ELEMENTS (lookup)); |
3114 | gkm_assert_cmprv (rv, ==, CKR_OK); |
3115 | |
3116 | === modified file 'po/LINGUAS' |
3117 | --- po/LINGUAS 2014-04-06 23:26:34 +0000 |
3118 | +++ po/LINGUAS 2015-02-27 19:55:06 +0000 |
3119 | @@ -42,6 +42,7 @@ |
3120 | it |
3121 | ja |
3122 | ka |
3123 | +kk |
3124 | km |
3125 | kn |
3126 | ko |
3127 | |
3128 | === added file 'po/kk.po' |
3129 | --- po/kk.po 1970-01-01 00:00:00 +0000 |
3130 | +++ po/kk.po 2015-02-27 19:55:06 +0000 |
3131 | @@ -0,0 +1,572 @@ |
3132 | +# Kazakh translation for gnome-keyring. |
3133 | +# Copyright (C) 2014 gnome-keyring's COPYRIGHT HOLDER |
3134 | +# This file is distributed under the same license as the gnome-keyring package. |
3135 | +# Baurzhan Muftakhidinov <baurthefirst@gmail.com>, 2014. |
3136 | +# |
3137 | +msgid "" |
3138 | +msgstr "" |
3139 | +"Project-Id-Version: gnome-keyring master\n" |
3140 | +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" |
3141 | +"keyring&keywords=I18N+L10N&component=general\n" |
3142 | +"POT-Creation-Date: 2014-10-28 07:44+0000\n" |
3143 | +"PO-Revision-Date: 2014-10-28 17:27+0600\n" |
3144 | +"Last-Translator: Baurzhan Muftakhidinov <baurthefirst@gmail.com>\n" |
3145 | +"Language-Team: Kazakh <kk@li.org>\n" |
3146 | +"Language: kk\n" |
3147 | +"MIME-Version: 1.0\n" |
3148 | +"Content-Type: text/plain; charset=UTF-8\n" |
3149 | +"Content-Transfer-Encoding: 8bit\n" |
3150 | +"X-Generator: Poedit 1.6.9\n" |
3151 | + |
3152 | +#. TRANSLATORS: This is the label for an keyring created without a label |
3153 | +#: ../daemon/dbus/gkd-secret-change.c:85 |
3154 | +#: ../daemon/dbus/gkd-secret-change.c:121 |
3155 | +#: ../daemon/dbus/gkd-secret-create.c:78 |
3156 | +#: ../pkcs11/secret-store/gkm-secret-collection.c:324 |
3157 | +#: ../pkcs11/wrap-layer/gkm-wrap-login.c:345 |
3158 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:753 |
3159 | +msgid "Unnamed" |
3160 | +msgstr "Атаусыз" |
3161 | + |
3162 | +#: ../daemon/dbus/gkd-secret-change.c:90 |
3163 | +#, c-format |
3164 | +msgid "Enter the old password for the '%s' keyring" |
3165 | +msgstr "'%s' кілттер бауы үшін ескі парольді енгізіңіз" |
3166 | + |
3167 | +#: ../daemon/dbus/gkd-secret-change.c:94 |
3168 | +#, c-format |
3169 | +msgid "" |
3170 | +"An application wants to change the password for the '%s' keyring. Enter the " |
3171 | +"old password for it." |
3172 | +msgstr "" |
3173 | +"Қолданба '%s' кілттер бауы үшін парольді өзгерткісі келеді. Ол үшін ескі " |
3174 | +"парольді енгізіңіз." |
3175 | + |
3176 | +#: ../daemon/dbus/gkd-secret-change.c:100 |
3177 | +#: ../daemon/dbus/gkd-secret-change.c:136 |
3178 | +#: ../daemon/dbus/gkd-secret-change.c:147 |
3179 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1143 |
3180 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1255 |
3181 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1290 |
3182 | +msgid "Continue" |
3183 | +msgstr "Жалғастыру" |
3184 | + |
3185 | +#: ../daemon/dbus/gkd-secret-change.c:126 |
3186 | +#, c-format |
3187 | +msgid "Choose a new password for the '%s' keyring" |
3188 | +msgstr "'%s' кілттер бауы үшін жаңа парольді таңдаңыз" |
3189 | + |
3190 | +#: ../daemon/dbus/gkd-secret-change.c:130 |
3191 | +#, c-format |
3192 | +msgid "" |
3193 | +"An application wants to change the password for the '%s' keyring. Choose the " |
3194 | +"new password you want to use for it." |
3195 | +msgstr "" |
3196 | +"Қолданба '%s' кілттер бауы үшін парольді өзгерткісі келеді. Қолданғыңыз " |
3197 | +"келетін жаңа парольді енгізіңіз." |
3198 | + |
3199 | +#: ../daemon/dbus/gkd-secret-change.c:143 |
3200 | +#: ../daemon/dbus/gkd-secret-create.c:94 |
3201 | +msgid "Store passwords unencrypted?" |
3202 | +msgstr "Парольдерді шифрленбеген түрде сақтау керек пе?" |
3203 | + |
3204 | +#: ../daemon/dbus/gkd-secret-change.c:145 |
3205 | +#: ../daemon/dbus/gkd-secret-create.c:96 |
3206 | +msgid "" |
3207 | +"By choosing to use a blank password, your stored passwords will not be " |
3208 | +"safely encrypted. They will be accessible by anyone with access to your " |
3209 | +"files." |
3210 | +msgstr "" |
3211 | +"Бос парольді таңдасаңыз, сақталған парольдер шифрленбейтін болады. Яғни, " |
3212 | +"сіздің файлдарыңызды оқи алатын адам парольдеріңізді де оқи алатын болады." |
3213 | + |
3214 | +#: ../daemon/dbus/gkd-secret-change.c:153 |
3215 | +msgid "The original password was incorrect" |
3216 | +msgstr "Бастапқы паролі қате болды" |
3217 | + |
3218 | +#: ../daemon/dbus/gkd-secret-change.c:354 |
3219 | +msgid "Change Keyring Password" |
3220 | +msgstr "Кілттер бауының паролін өзгерту" |
3221 | + |
3222 | +#: ../daemon/dbus/gkd-secret-create.c:80 |
3223 | +#, c-format |
3224 | +msgid "" |
3225 | +"An application wants to create a new keyring called '%s'. Choose the " |
3226 | +"password you want to use for it." |
3227 | +msgstr "" |
3228 | +"Қолданба жаңа '%s' кілттер бауын жасағысы келеді. Қолданғыңыз келетін жаңа " |
3229 | +"парольді енгізіңіз." |
3230 | + |
3231 | +#: ../daemon/dbus/gkd-secret-create.c:84 |
3232 | +msgid "Choose password for new keyring" |
3233 | +msgstr "Кілттер бауы үшін жаңа парольді таңдаңыз" |
3234 | + |
3235 | +#: ../daemon/dbus/gkd-secret-create.c:311 |
3236 | +msgid "New Keyring Password" |
3237 | +msgstr "Кілттер бауының жаңа паролі" |
3238 | + |
3239 | +#: ../daemon/gnome-keyring-gpg.desktop.in.in.h:1 |
3240 | +msgid "GPG Password Agent" |
3241 | +msgstr "GPG парольдер агенті" |
3242 | + |
3243 | +#: ../daemon/gnome-keyring-gpg.desktop.in.in.h:2 |
3244 | +msgid "GNOME Keyring: GPG Agent" |
3245 | +msgstr "GNOME Keyring: GPG агенті" |
3246 | + |
3247 | +#: ../daemon/gnome-keyring-pkcs11.desktop.in.in.h:1 |
3248 | +msgid "Certificate and Key Storage" |
3249 | +msgstr "Сертификаттар және кілттер қоймасы" |
3250 | + |
3251 | +#: ../daemon/gnome-keyring-pkcs11.desktop.in.in.h:2 |
3252 | +msgid "GNOME Keyring: PKCS#11 Component" |
3253 | +msgstr "GNOME Keyring: PKCS#11 құрамасы" |
3254 | + |
3255 | +#: ../daemon/gnome-keyring-secrets.desktop.in.in.h:1 |
3256 | +msgid "Secret Storage Service" |
3257 | +msgstr "Құпия кілттер қоймасы қызметі" |
3258 | + |
3259 | +#: ../daemon/gnome-keyring-secrets.desktop.in.in.h:2 |
3260 | +msgid "GNOME Keyring: Secret Service" |
3261 | +msgstr "GNOME Keyring: Құпия кілттер қызметі" |
3262 | + |
3263 | +#: ../daemon/gnome-keyring-ssh.desktop.in.in.h:1 |
3264 | +msgid "SSH Key Agent" |
3265 | +msgstr "SSH кілттер агенті" |
3266 | + |
3267 | +#: ../daemon/gnome-keyring-ssh.desktop.in.in.h:2 |
3268 | +msgid "GNOME Keyring: SSH Agent" |
3269 | +msgstr "GNOME Keyring: SSH агенті" |
3270 | + |
3271 | +#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:105 |
3272 | +msgid "Unknown" |
3273 | +msgstr "Белгісіз" |
3274 | + |
3275 | +#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:202 |
3276 | +#, c-format |
3277 | +msgid "PGP Key: %s" |
3278 | +msgstr "PGP кілті: %s" |
3279 | + |
3280 | +#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:349 |
3281 | +#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:350 |
3282 | +msgid "Enter Passphrase" |
3283 | +msgstr "Кілттік фразаны енгізіңіз" |
3284 | + |
3285 | +#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:354 |
3286 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:602 |
3287 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:630 |
3288 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:645 |
3289 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:721 |
3290 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:767 |
3291 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:799 |
3292 | +msgid "Unlock" |
3293 | +msgstr "Босату" |
3294 | + |
3295 | +#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:383 |
3296 | +msgid "Automatically unlock this key, whenever I'm logged in" |
3297 | +msgstr "Мен жүйеге кірген кезде, бұл кілтті автобосату" |
3298 | + |
3299 | +#. TRANSLATORS: This is the display label for the login keyring |
3300 | +#: ../daemon/login/gkd-login.c:150 |
3301 | +msgid "Login" |
3302 | +msgstr "Кіру" |
3303 | + |
3304 | +#: ../egg/dotlock.c:668 |
3305 | +#, c-format |
3306 | +msgid "failed to create temporary file `%s': %s\n" |
3307 | +msgstr "`%s' уақытша файлын жасау сәтсіз: %s\n" |
3308 | + |
3309 | +#: ../egg/dotlock.c:718 |
3310 | +#, c-format |
3311 | +msgid "error writing to `%s': %s\n" |
3312 | +msgstr "`%s' ішіне жазу қатесі: %s\n" |
3313 | + |
3314 | +#: ../egg/dotlock.c:782 |
3315 | +#, c-format |
3316 | +msgid "can't create `%s': %s\n" |
3317 | +msgstr "`%s' жасау мүмкін емес: %s\n" |
3318 | + |
3319 | +#. Note: It is unlikley that we get a race here unless a pid is |
3320 | +#. reused too fast or a new process with the same pid as the one |
3321 | +#. of the stale file tries to lock right at the same time as we. |
3322 | +#: ../egg/dotlock.c:1048 |
3323 | +#, c-format |
3324 | +msgid "removing stale lockfile (created by %d)\n" |
3325 | +msgstr "ескірген блоктау файлын өшіру (жасаған %d)\n" |
3326 | + |
3327 | +#: ../egg/dotlock.c:1084 |
3328 | +#, c-format |
3329 | +msgid "waiting for lock (held by %d%s) %s...\n" |
3330 | +msgstr "блоктауды күту (ұстап отырған %d%s) %s...\n" |
3331 | + |
3332 | +#: ../egg/dotlock.c:1085 |
3333 | +msgid "(deadlock?) " |
3334 | +msgstr "(өзара блоктау?) " |
3335 | + |
3336 | +#: ../egg/dotlock.c:1124 |
3337 | +#, c-format |
3338 | +msgid "lock `%s' not made: %s\n" |
3339 | +msgstr "`%s' блоктауы жасалмады: %s\n" |
3340 | + |
3341 | +#: ../egg/dotlock.c:1150 |
3342 | +#, c-format |
3343 | +msgid "waiting for lock %s...\n" |
3344 | +msgstr "%s блоктауын күту...\n" |
3345 | + |
3346 | +#: ../egg/egg-oid.c:40 |
3347 | +msgid "Domain Component" |
3348 | +msgstr "Домен құрамасы" |
3349 | + |
3350 | +#: ../egg/egg-oid.c:42 |
3351 | +msgid "User ID" |
3352 | +msgstr "Пайдаланушы ID" |
3353 | + |
3354 | +#: ../egg/egg-oid.c:45 |
3355 | +msgid "Email Address" |
3356 | +msgstr "Эл. пошта адресі" |
3357 | + |
3358 | +#: ../egg/egg-oid.c:53 |
3359 | +msgid "Date of Birth" |
3360 | +msgstr "Туған күні" |
3361 | + |
3362 | +#: ../egg/egg-oid.c:55 |
3363 | +msgid "Place of Birth" |
3364 | +msgstr "Туған жері" |
3365 | + |
3366 | +#: ../egg/egg-oid.c:57 |
3367 | +msgid "Gender" |
3368 | +msgstr "Жынысы" |
3369 | + |
3370 | +#: ../egg/egg-oid.c:59 |
3371 | +msgid "Country of Citizenship" |
3372 | +msgstr "Қай елдің азаматы" |
3373 | + |
3374 | +#: ../egg/egg-oid.c:61 |
3375 | +msgid "Country of Residence" |
3376 | +msgstr "Тұрып жатқан ел" |
3377 | + |
3378 | +#: ../egg/egg-oid.c:64 |
3379 | +msgid "Common Name" |
3380 | +msgstr "Жалпы аты" |
3381 | + |
3382 | +#: ../egg/egg-oid.c:66 |
3383 | +msgid "Surname" |
3384 | +msgstr "Фамилия" |
3385 | + |
3386 | +#: ../egg/egg-oid.c:68 |
3387 | +msgid "Serial Number" |
3388 | +msgstr "Сериялық нөмірі" |
3389 | + |
3390 | +#: ../egg/egg-oid.c:70 |
3391 | +msgid "Country" |
3392 | +msgstr "Ел" |
3393 | + |
3394 | +#: ../egg/egg-oid.c:72 |
3395 | +msgid "Locality" |
3396 | +msgstr "Аймақ" |
3397 | + |
3398 | +#: ../egg/egg-oid.c:74 |
3399 | +msgid "State" |
3400 | +msgstr "Штат" |
3401 | + |
3402 | +#: ../egg/egg-oid.c:76 |
3403 | +msgid "Street" |
3404 | +msgstr "Көше" |
3405 | + |
3406 | +#: ../egg/egg-oid.c:78 |
3407 | +msgid "Organization" |
3408 | +msgstr "Ұйым" |
3409 | + |
3410 | +#: ../egg/egg-oid.c:80 |
3411 | +msgid "Organizational Unit" |
3412 | +msgstr "Ұйым бөлімі" |
3413 | + |
3414 | +#: ../egg/egg-oid.c:82 |
3415 | +msgid "Title" |
3416 | +msgstr "Атауы" |
3417 | + |
3418 | +#: ../egg/egg-oid.c:84 |
3419 | +msgid "Telephone Number" |
3420 | +msgstr "Телефон нөмірі" |
3421 | + |
3422 | +#: ../egg/egg-oid.c:86 |
3423 | +msgid "Given Name" |
3424 | +msgstr "Аты" |
3425 | + |
3426 | +#: ../egg/egg-oid.c:88 |
3427 | +msgid "Initials" |
3428 | +msgstr "Инициалдар" |
3429 | + |
3430 | +#: ../egg/egg-oid.c:90 |
3431 | +msgid "Generation Qualifier" |
3432 | +msgstr "Ұрпақ белгісі" |
3433 | + |
3434 | +#: ../egg/egg-oid.c:92 |
3435 | +msgid "DN Qualifier" |
3436 | +msgstr "Айыру атының белгісі" |
3437 | + |
3438 | +#: ../egg/egg-oid.c:94 |
3439 | +msgid "Pseudonym" |
3440 | +msgstr "Псевдоним" |
3441 | + |
3442 | +#: ../egg/egg-oid.c:97 |
3443 | +msgid "RSA" |
3444 | +msgstr "RSA" |
3445 | + |
3446 | +#: ../egg/egg-oid.c:98 |
3447 | +msgid "MD2 with RSA" |
3448 | +msgstr "RSA қолданатын MD2" |
3449 | + |
3450 | +#: ../egg/egg-oid.c:99 |
3451 | +msgid "MD5 with RSA" |
3452 | +msgstr "RSA қолданатын MD5" |
3453 | + |
3454 | +#: ../egg/egg-oid.c:100 |
3455 | +msgid "SHA1 with RSA" |
3456 | +msgstr "RSA қолданатын SHA1 " |
3457 | + |
3458 | +#: ../egg/egg-oid.c:102 |
3459 | +msgid "DSA" |
3460 | +msgstr "DSA" |
3461 | + |
3462 | +#: ../egg/egg-oid.c:103 |
3463 | +msgid "SHA1 with DSA" |
3464 | +msgstr "DSA қолданатын SHA1 " |
3465 | + |
3466 | +#. Extended Key Usages |
3467 | +#: ../egg/egg-oid.c:106 |
3468 | +msgid "Server Authentication" |
3469 | +msgstr "Сервер аутентификациясы" |
3470 | + |
3471 | +#: ../egg/egg-oid.c:107 |
3472 | +msgid "Client Authentication" |
3473 | +msgstr "Клиент аутентификациясы" |
3474 | + |
3475 | +#: ../egg/egg-oid.c:108 |
3476 | +msgid "Code Signing" |
3477 | +msgstr "Кодқа қолтаңба қою" |
3478 | + |
3479 | +#: ../egg/egg-oid.c:109 |
3480 | +msgid "Email Protection" |
3481 | +msgstr "Эл. поштаны қорғау" |
3482 | + |
3483 | +#: ../egg/egg-oid.c:110 |
3484 | +msgid "Time Stamping" |
3485 | +msgstr "Уақыт белгісі қою" |
3486 | + |
3487 | +#: ../egg/egg-spawn.c:272 |
3488 | +#, c-format |
3489 | +msgid "Unexpected error in select() reading data from a child process (%s)" |
3490 | +msgstr "" |
3491 | +"Ұрпақ процестен мәліметті оқу кезінде select() ішіндегі күтпеген қате (%s)" |
3492 | + |
3493 | +#: ../egg/egg-spawn.c:319 |
3494 | +#, c-format |
3495 | +msgid "Unexpected error in waitpid() (%s)" |
3496 | +msgstr "Күтпеген waitpid() қатесі (%s)" |
3497 | + |
3498 | +#: ../pkcs11/gkm/gkm-certificate.c:580 |
3499 | +msgid "Unnamed Certificate" |
3500 | +msgstr "Атаусыз сертификат" |
3501 | + |
3502 | +#: ../pkcs11/ssh-store/gkm-ssh-private-key.c:341 |
3503 | +msgid "Couldn't parse public SSH key" |
3504 | +msgstr "Публикалық SSH кілтін талдау мүмкін емес" |
3505 | + |
3506 | +#. Get the label ready |
3507 | +#: ../pkcs11/wrap-layer/gkm-wrap-login.c:345 |
3508 | +#, c-format |
3509 | +msgid "Unlock password for: %s" |
3510 | +msgstr "Босату паролі үшін: %s" |
3511 | + |
3512 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:590 |
3513 | +msgid "Unlock Login Keyring" |
3514 | +msgstr "Жүйеге кіру кілттер бауын босату" |
3515 | + |
3516 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:592 |
3517 | +msgid "Enter password to unlock your login keyring" |
3518 | +msgstr "Жүйеге кіру кілттер бауын босату үшін парольді енгізіңіз" |
3519 | + |
3520 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:596 |
3521 | +msgid "" |
3522 | +"The password you use to log in to your computer no longer matches that of " |
3523 | +"your login keyring." |
3524 | +msgstr "" |
3525 | +"Компьютеріңізге кіру үшін қолданылатын пароль енді жүйеге кіру кілттер бауы " |
3526 | +"паролімен сәйкес келмейді." |
3527 | + |
3528 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:598 |
3529 | +msgid "" |
3530 | +"The login keyring did not get unlocked when you logged into your computer." |
3531 | +msgstr "" |
3532 | +"Жүйеге кіру кілттер бауы сіз жүйеге кірген кезде блоктаудан босатылмады." |
3533 | + |
3534 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:616 |
3535 | +msgid "Unlock Keyring" |
3536 | +msgstr "Кілттер бауын босату" |
3537 | + |
3538 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:618 |
3539 | +#, c-format |
3540 | +msgid "Enter password for keyring '%s' to unlock" |
3541 | +msgstr "'%s' кілттер бауын блоктаудан босату үшін парольді енгізіңіз" |
3542 | + |
3543 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:622 |
3544 | +#, c-format |
3545 | +msgid "An application wants access to the keyring '%s', but it is locked" |
3546 | +msgstr "" |
3547 | +"Қолданба '%s' кілттер бауына қатынау талабын жасағысы келеді, бірақ, ол " |
3548 | +"блокталған" |
3549 | + |
3550 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:628 |
3551 | +msgid "Automatically unlock this keyring whenever I'm logged in" |
3552 | +msgstr "Мен жүйеге кірген кезде, бұл кілттер бауын автобосату" |
3553 | + |
3554 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:639 |
3555 | +msgid "Unlock private key" |
3556 | +msgstr "Жеке кілтті блоктаудан босату" |
3557 | + |
3558 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:641 |
3559 | +msgid "Unlock certificate" |
3560 | +msgstr "Сертификатты блоктаудан босату" |
3561 | + |
3562 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:643 |
3563 | +msgid "Unlock public key" |
3564 | +msgstr "Публикалық кілтті блоктаудан босату" |
3565 | + |
3566 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:654 |
3567 | +msgid "Enter password to unlock the private key" |
3568 | +msgstr "Жеке кілтті блоктаудан босату үшін парольді енгізіңіз" |
3569 | + |
3570 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:656 |
3571 | +msgid "Enter password to unlock the certificate" |
3572 | +msgstr "Сертификатты блоктаудан босату үшін парольді енгізіңіз" |
3573 | + |
3574 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:658 |
3575 | +msgid "Enter password to unlock the public key" |
3576 | +msgstr "Публикалық кілтті босату үшін парольді енгізіңіз" |
3577 | + |
3578 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:660 |
3579 | +msgid "Enter password to unlock" |
3580 | +msgstr "Блоктаудан босату үшін парольді енгізіңіз" |
3581 | + |
3582 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:670 |
3583 | +msgid "Automatically unlock this key whenever I'm logged in" |
3584 | +msgstr "Мен жүйеге кірген кезде, бұл кілтті автобосату" |
3585 | + |
3586 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:672 |
3587 | +msgid "Automatically unlock this certificate whenever I'm logged in" |
3588 | +msgstr "Мен жүйеге кірген кезде, бұл сертификатты автобосату" |
3589 | + |
3590 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:674 |
3591 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:796 |
3592 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1140 |
3593 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1288 |
3594 | +msgid "Automatically unlock whenever I'm logged in" |
3595 | +msgstr "Мен жүйеге кірген кезде, автобосату" |
3596 | + |
3597 | +#. TRANSLATORS: The private key is locked |
3598 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:685 |
3599 | +#, c-format |
3600 | +msgid "An application wants access to the private key '%s', but it is locked" |
3601 | +msgstr "" |
3602 | +"Қолданба '%s' жеке кілтіне қатынау талабын жасағысы келеді, бірақ, ол " |
3603 | +"блокталған" |
3604 | + |
3605 | +#. TRANSLATORS: The certificate is locked |
3606 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:688 |
3607 | +#, c-format |
3608 | +msgid "An application wants access to the certificate '%s', but it is locked" |
3609 | +msgstr "" |
3610 | +"Қолданба '%s' сертификатына қатынау талабын жасағысы келеді, бірақ, ол " |
3611 | +"блокталған" |
3612 | + |
3613 | +#. TRANSLATORS: The public key is locked |
3614 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:691 |
3615 | +#, c-format |
3616 | +msgid "An application wants access to the public key '%s', but it is locked" |
3617 | +msgstr "" |
3618 | +"Қолданба '%s' публикалық кілтіне қатынау талабын жасағысы келеді, бірақ, ол " |
3619 | +"блокталған" |
3620 | + |
3621 | +#. TRANSLATORS: The object '%s' is locked |
3622 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:694 |
3623 | +#, c-format |
3624 | +msgid "An application wants access to '%s', but it is locked" |
3625 | +msgstr "" |
3626 | +"Қолданба '%s' үшін қатынау талабын жасағысы келеді, бірақ, ол блокталған" |
3627 | + |
3628 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:765 |
3629 | +msgid "The unlock password was incorrect" |
3630 | +msgstr "Босату паролі қате болды" |
3631 | + |
3632 | +#. Build up the prompt |
3633 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:786 |
3634 | +msgid "Unlock certificate/key storage" |
3635 | +msgstr "Сертификаттар/кілттер қоймасын блоктаудан босату" |
3636 | + |
3637 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:787 |
3638 | +msgid "Enter password to unlock the certificate/key storage" |
3639 | +msgstr "" |
3640 | +"Сертификаттар/кілттер қоймасын блоктаудан босату үшін парольді енгізіңіз" |
3641 | + |
3642 | +#. TRANSLATORS: The storage is locked, and needs unlocking before the application can use it. |
3643 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:790 |
3644 | +#, c-format |
3645 | +msgid "" |
3646 | +"An application wants access to the certificate/key storage '%s', but it is " |
3647 | +"locked" |
3648 | +msgstr "" |
3649 | +"Қолданба '%s' сертификаттар/кілттер қоймасына қатынау талабын жасағысы " |
3650 | +"келеді, бірақ, ол блокталған" |
3651 | + |
3652 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1131 |
3653 | +msgid "New Password Required" |
3654 | +msgstr "Жаңа пароль керек" |
3655 | + |
3656 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1132 |
3657 | +msgid "New password required for secure storage" |
3658 | +msgstr "Қауіпсіз қойма үшін жаңа пароль керек" |
3659 | + |
3660 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1134 |
3661 | +#, c-format |
3662 | +msgid "" |
3663 | +"In order to prepare '%s' for storage of certificates or keys, a password is " |
3664 | +"required" |
3665 | +msgstr "" |
3666 | +"'%s' ішіне сертификаттар не кілттерді сақтауға дайындау үшін пароль керек" |
3667 | + |
3668 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1248 |
3669 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1279 |
3670 | +msgid "Change Password" |
3671 | +msgstr "Парольді өзгерту" |
3672 | + |
3673 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1249 |
3674 | +msgid "Original password for secure storage" |
3675 | +msgstr "Қауіпсіз қойма үшін ескі паролі" |
3676 | + |
3677 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1251 |
3678 | +#, c-format |
3679 | +msgid "To change the password for '%s', the original password is required" |
3680 | +msgstr "'%s' паролін өзгерту үшін ескі паролі қажет" |
3681 | + |
3682 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1280 |
3683 | +msgid "Change password for secure storage" |
3684 | +msgstr "Қауіпсіз қойма үшін парольді өзгерту" |
3685 | + |
3686 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1282 |
3687 | +#, c-format |
3688 | +msgid "Type a new password for '%s'" |
3689 | +msgstr "'%s' үшін жаңа парольді енгізіңіз" |
3690 | + |
3691 | +#: ../tool/gkr-tool.c:100 |
3692 | +#, c-format |
3693 | +msgid "usage: gnome-keyring command [options]\n" |
3694 | +msgstr "қолданылуы: gnome-keyring команда [опциялар]\n" |
3695 | + |
3696 | +#: ../tool/gkr-tool.c:102 |
3697 | +msgid "commands: " |
3698 | +msgstr "командалар: " |
3699 | + |
3700 | +#. Translators: keep same length as translated message "commands: " |
3701 | +#: ../tool/gkr-tool.c:106 |
3702 | +msgid " " |
3703 | +msgstr " " |
3704 | |
3705 | === modified file 'po/tr.po' |
3706 | --- po/tr.po 2013-11-15 15:32:11 +0000 |
3707 | +++ po/tr.po 2015-02-27 19:55:06 +0000 |
3708 | @@ -8,15 +8,15 @@ |
3709 | # Serdar CICEK <serdar@nerd.com.tr>, 2008. |
3710 | # Baris Cicek <baris@teamforce.name.tr>, 2008, 2009. |
3711 | # Osman Karagöz <osmank3@gmail.com>, 2013. |
3712 | -# Muhammet Kara <muhammetk@gmail.com>, 2011, 2013. |
3713 | +# Muhammet Kara <muhammetk@gmail.com>, 2011, 2013, 2014. |
3714 | # |
3715 | msgid "" |
3716 | msgstr "" |
3717 | "Project-Id-Version: gnome-keyring\n" |
3718 | "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" |
3719 | "keyring&keywords=I18N+L10N&component=general\n" |
3720 | -"POT-Creation-Date: 2013-08-26 16:32+0000\n" |
3721 | -"PO-Revision-Date: 2013-09-01 13:11+0300\n" |
3722 | +"POT-Creation-Date: 2014-12-06 19:51+0000\n" |
3723 | +"PO-Revision-Date: 2014-12-07 00:18+0200\n" |
3724 | "Last-Translator: Muhammet Kara <muhammetk@gmail.com>\n" |
3725 | "Language-Team: Türkçe <gnome-turk@gnome.org>\n" |
3726 | "Language: tr\n" |
3727 | @@ -27,21 +27,21 @@ |
3728 | "X-Generator: Gtranslator 2.91.6\n" |
3729 | |
3730 | #. TRANSLATORS: This is the label for an keyring created without a label |
3731 | -#: ../daemon/dbus/gkd-secret-change.c:86 |
3732 | -#: ../daemon/dbus/gkd-secret-change.c:122 |
3733 | -#: ../daemon/dbus/gkd-secret-create.c:79 |
3734 | -#: ../pkcs11/secret-store/gkm-secret-collection.c:325 |
3735 | -#: ../pkcs11/wrap-layer/gkm-wrap-login.c:346 |
3736 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:754 |
3737 | +#: ../daemon/dbus/gkd-secret-change.c:85 |
3738 | +#: ../daemon/dbus/gkd-secret-change.c:121 |
3739 | +#: ../daemon/dbus/gkd-secret-create.c:78 |
3740 | +#: ../pkcs11/secret-store/gkm-secret-collection.c:324 |
3741 | +#: ../pkcs11/wrap-layer/gkm-wrap-login.c:345 |
3742 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:753 |
3743 | msgid "Unnamed" |
3744 | msgstr "Adsız" |
3745 | |
3746 | -#: ../daemon/dbus/gkd-secret-change.c:91 |
3747 | +#: ../daemon/dbus/gkd-secret-change.c:90 |
3748 | #, c-format |
3749 | msgid "Enter the old password for the '%s' keyring" |
3750 | msgstr "'%s' anahtarlığı için eski parolayı girin" |
3751 | |
3752 | -#: ../daemon/dbus/gkd-secret-change.c:95 |
3753 | +#: ../daemon/dbus/gkd-secret-change.c:94 |
3754 | #, c-format |
3755 | msgid "" |
3756 | "An application wants to change the password for the '%s' keyring. Enter the " |
3757 | @@ -50,21 +50,21 @@ |
3758 | "Bir uygulama '%s' anahtarlığının parolasını değiştirmek istiyor. Bu " |
3759 | "anahtarlık için eski parolayı girin." |
3760 | |
3761 | -#: ../daemon/dbus/gkd-secret-change.c:101 |
3762 | -#: ../daemon/dbus/gkd-secret-change.c:137 |
3763 | -#: ../daemon/dbus/gkd-secret-change.c:148 |
3764 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1144 |
3765 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1256 |
3766 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1291 |
3767 | +#: ../daemon/dbus/gkd-secret-change.c:100 |
3768 | +#: ../daemon/dbus/gkd-secret-change.c:136 |
3769 | +#: ../daemon/dbus/gkd-secret-change.c:147 |
3770 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1163 |
3771 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1276 |
3772 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1311 |
3773 | msgid "Continue" |
3774 | msgstr "Devam" |
3775 | |
3776 | -#: ../daemon/dbus/gkd-secret-change.c:127 |
3777 | +#: ../daemon/dbus/gkd-secret-change.c:126 |
3778 | #, c-format |
3779 | msgid "Choose a new password for the '%s' keyring" |
3780 | msgstr "'%s' anahtarlığı için yeni bir parola belirleyin" |
3781 | |
3782 | -#: ../daemon/dbus/gkd-secret-change.c:131 |
3783 | +#: ../daemon/dbus/gkd-secret-change.c:130 |
3784 | #, c-format |
3785 | msgid "" |
3786 | "An application wants to change the password for the '%s' keyring. Choose the " |
3787 | @@ -73,13 +73,13 @@ |
3788 | "Bir uygulama '%s' anahtarlığının parolasını değiştirmek istiyor. Bu " |
3789 | "anahtarlık için kullanmak istediğiniz yeni parolayı seçin." |
3790 | |
3791 | -#: ../daemon/dbus/gkd-secret-change.c:144 |
3792 | -#: ../daemon/dbus/gkd-secret-create.c:95 |
3793 | +#: ../daemon/dbus/gkd-secret-change.c:143 |
3794 | +#: ../daemon/dbus/gkd-secret-create.c:94 |
3795 | msgid "Store passwords unencrypted?" |
3796 | msgstr "Parolalar şifrelenmeden depolansın mı?" |
3797 | |
3798 | -#: ../daemon/dbus/gkd-secret-change.c:146 |
3799 | -#: ../daemon/dbus/gkd-secret-create.c:97 |
3800 | +#: ../daemon/dbus/gkd-secret-change.c:145 |
3801 | +#: ../daemon/dbus/gkd-secret-create.c:96 |
3802 | msgid "" |
3803 | "By choosing to use a blank password, your stored passwords will not be " |
3804 | "safely encrypted. They will be accessible by anyone with access to your " |
3805 | @@ -88,15 +88,15 @@ |
3806 | "Parolayı boş kullanmak seçildiğinde, depolanan parolalarınız güvenli olarak " |
3807 | "şifrelenmeyecek. Parolalarınıza dosyalarınıza erişebilen kişiler erişecek." |
3808 | |
3809 | -#: ../daemon/dbus/gkd-secret-change.c:154 |
3810 | +#: ../daemon/dbus/gkd-secret-change.c:153 |
3811 | msgid "The original password was incorrect" |
3812 | msgstr "Asıl parola yanlış" |
3813 | |
3814 | -#: ../daemon/dbus/gkd-secret-change.c:355 |
3815 | +#: ../daemon/dbus/gkd-secret-change.c:354 |
3816 | msgid "Change Keyring Password" |
3817 | msgstr "Anahtarlık Parolası Değiştir" |
3818 | |
3819 | -#: ../daemon/dbus/gkd-secret-create.c:81 |
3820 | +#: ../daemon/dbus/gkd-secret-create.c:80 |
3821 | #, c-format |
3822 | msgid "" |
3823 | "An application wants to create a new keyring called '%s'. Choose the " |
3824 | @@ -105,11 +105,11 @@ |
3825 | "Bir uygulama '%s' adlı yeni bir anahtarlık oluşturmak istiyor. Bunun için " |
3826 | "kullanmak istediğiniz parolayı seçin." |
3827 | |
3828 | -#: ../daemon/dbus/gkd-secret-create.c:85 |
3829 | +#: ../daemon/dbus/gkd-secret-create.c:84 |
3830 | msgid "Choose password for new keyring" |
3831 | msgstr "Yeni anahtarlık için parola seçin" |
3832 | |
3833 | -#: ../daemon/dbus/gkd-secret-create.c:312 |
3834 | +#: ../daemon/dbus/gkd-secret-create.c:311 |
3835 | msgid "New Keyring Password" |
3836 | msgstr "Yeni Anahtarlık Parolası" |
3837 | |
3838 | @@ -145,36 +145,36 @@ |
3839 | msgid "GNOME Keyring: SSH Agent" |
3840 | msgstr "GNOME Anahtarlığı: SSH Aracı" |
3841 | |
3842 | -#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:106 |
3843 | +#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:82 |
3844 | msgid "Unknown" |
3845 | msgstr "Bilinmeyen" |
3846 | |
3847 | -#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:203 |
3848 | -#, c-format |
3849 | -msgid "PGP Key: %s" |
3850 | -msgstr "PGP Anahtarı: %s" |
3851 | - |
3852 | -#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:350 |
3853 | -#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:351 |
3854 | +#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:144 |
3855 | +#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:145 |
3856 | msgid "Enter Passphrase" |
3857 | msgstr "Parola Metnini Girin" |
3858 | |
3859 | -#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:355 |
3860 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:603 |
3861 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:631 |
3862 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:646 |
3863 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:722 |
3864 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:768 |
3865 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:800 |
3866 | +#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:149 |
3867 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:602 |
3868 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:630 |
3869 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:645 |
3870 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:721 |
3871 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:767 |
3872 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:799 |
3873 | msgid "Unlock" |
3874 | msgstr "Kilidini kaldır" |
3875 | |
3876 | -#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:384 |
3877 | +#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:162 |
3878 | msgid "Automatically unlock this key, whenever I'm logged in" |
3879 | msgstr "Her oturum açtığımda, bu anahtarın kilidini otomatik olarak aç" |
3880 | |
3881 | +#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:225 |
3882 | +#, c-format |
3883 | +msgid "PGP Key: %s" |
3884 | +msgstr "PGP Anahtarı: %s" |
3885 | + |
3886 | #. TRANSLATORS: This is the display label for the login keyring |
3887 | -#: ../daemon/login/gkd-login.c:145 |
3888 | +#: ../daemon/login/gkd-login.c:158 |
3889 | msgid "Login" |
3890 | msgstr "Giriş" |
3891 | |
3892 | @@ -221,257 +221,256 @@ |
3893 | msgid "waiting for lock %s...\n" |
3894 | msgstr "%s kilidi bekleniyor...\n" |
3895 | |
3896 | -#: ../egg/egg-oid.c:41 |
3897 | +#: ../egg/egg-oid.c:40 |
3898 | msgid "Domain Component" |
3899 | msgstr "Alan Bileşeni" |
3900 | |
3901 | -#: ../egg/egg-oid.c:43 |
3902 | +#: ../egg/egg-oid.c:42 |
3903 | msgid "User ID" |
3904 | msgstr "Kullanıcı ID" |
3905 | |
3906 | -#: ../egg/egg-oid.c:46 |
3907 | +#: ../egg/egg-oid.c:45 |
3908 | msgid "Email Address" |
3909 | msgstr "E-posta Adresi" |
3910 | |
3911 | -#: ../egg/egg-oid.c:54 |
3912 | +#: ../egg/egg-oid.c:53 |
3913 | msgid "Date of Birth" |
3914 | msgstr "Doğum Tarihi" |
3915 | |
3916 | -#: ../egg/egg-oid.c:56 |
3917 | +#: ../egg/egg-oid.c:55 |
3918 | msgid "Place of Birth" |
3919 | msgstr "Doğum Yeri" |
3920 | |
3921 | -#: ../egg/egg-oid.c:58 |
3922 | +#: ../egg/egg-oid.c:57 |
3923 | msgid "Gender" |
3924 | msgstr "Cinsiyet" |
3925 | |
3926 | -#: ../egg/egg-oid.c:60 |
3927 | +#: ../egg/egg-oid.c:59 |
3928 | msgid "Country of Citizenship" |
3929 | msgstr "Vatandaşlık Ülkesi" |
3930 | |
3931 | -#: ../egg/egg-oid.c:62 |
3932 | +#: ../egg/egg-oid.c:61 |
3933 | msgid "Country of Residence" |
3934 | msgstr "Yerleşim Ülkesi" |
3935 | |
3936 | -#: ../egg/egg-oid.c:65 |
3937 | +#: ../egg/egg-oid.c:64 |
3938 | msgid "Common Name" |
3939 | msgstr "Ortak Ad" |
3940 | |
3941 | -#: ../egg/egg-oid.c:67 |
3942 | +#: ../egg/egg-oid.c:66 |
3943 | msgid "Surname" |
3944 | msgstr "Soyadı" |
3945 | |
3946 | -#: ../egg/egg-oid.c:69 |
3947 | +#: ../egg/egg-oid.c:68 |
3948 | msgid "Serial Number" |
3949 | msgstr "Seri Numarası" |
3950 | |
3951 | -#: ../egg/egg-oid.c:71 |
3952 | +#: ../egg/egg-oid.c:70 |
3953 | msgid "Country" |
3954 | msgstr "Ülke" |
3955 | |
3956 | -#: ../egg/egg-oid.c:73 |
3957 | +#: ../egg/egg-oid.c:72 |
3958 | msgid "Locality" |
3959 | msgstr "Yöre" |
3960 | |
3961 | -#: ../egg/egg-oid.c:75 |
3962 | +#: ../egg/egg-oid.c:74 |
3963 | msgid "State" |
3964 | msgstr "Eyalet" |
3965 | |
3966 | -#: ../egg/egg-oid.c:77 |
3967 | +#: ../egg/egg-oid.c:76 |
3968 | msgid "Street" |
3969 | msgstr "Sokak" |
3970 | |
3971 | -#: ../egg/egg-oid.c:79 |
3972 | +#: ../egg/egg-oid.c:78 |
3973 | msgid "Organization" |
3974 | msgstr "Organizasyon" |
3975 | |
3976 | -#: ../egg/egg-oid.c:81 |
3977 | +#: ../egg/egg-oid.c:80 |
3978 | msgid "Organizational Unit" |
3979 | msgstr "Organizasyon Birimi" |
3980 | |
3981 | -#: ../egg/egg-oid.c:83 |
3982 | +#: ../egg/egg-oid.c:82 |
3983 | msgid "Title" |
3984 | msgstr "Başlık" |
3985 | |
3986 | -#: ../egg/egg-oid.c:85 |
3987 | +#: ../egg/egg-oid.c:84 |
3988 | msgid "Telephone Number" |
3989 | msgstr "Telefon Numarası" |
3990 | |
3991 | -#: ../egg/egg-oid.c:87 |
3992 | +#: ../egg/egg-oid.c:86 |
3993 | msgid "Given Name" |
3994 | msgstr "Verilen Ad" |
3995 | |
3996 | -#: ../egg/egg-oid.c:89 |
3997 | +#: ../egg/egg-oid.c:88 |
3998 | msgid "Initials" |
3999 | msgstr "Başharfleri" |
4000 | |
4001 | -#: ../egg/egg-oid.c:91 |
4002 | +#: ../egg/egg-oid.c:90 |
4003 | msgid "Generation Qualifier" |
4004 | msgstr "Üretim Belirteci" |
4005 | |
4006 | -#: ../egg/egg-oid.c:93 |
4007 | +#: ../egg/egg-oid.c:92 |
4008 | msgid "DN Qualifier" |
4009 | msgstr "DN Belirteci" |
4010 | |
4011 | -#: ../egg/egg-oid.c:95 |
4012 | +#: ../egg/egg-oid.c:94 |
4013 | msgid "Pseudonym" |
4014 | msgstr "Takma ad" |
4015 | |
4016 | -#: ../egg/egg-oid.c:98 |
4017 | +#: ../egg/egg-oid.c:97 |
4018 | msgid "RSA" |
4019 | msgstr "RSA" |
4020 | |
4021 | -#: ../egg/egg-oid.c:99 |
4022 | +#: ../egg/egg-oid.c:98 |
4023 | msgid "MD2 with RSA" |
4024 | msgstr "RSA ile MD2" |
4025 | |
4026 | -#: ../egg/egg-oid.c:100 |
4027 | +#: ../egg/egg-oid.c:99 |
4028 | msgid "MD5 with RSA" |
4029 | msgstr "RSA ile MD5" |
4030 | |
4031 | -#: ../egg/egg-oid.c:101 |
4032 | +#: ../egg/egg-oid.c:100 |
4033 | msgid "SHA1 with RSA" |
4034 | msgstr "RSA ile SHA1" |
4035 | |
4036 | -#: ../egg/egg-oid.c:103 |
4037 | +#: ../egg/egg-oid.c:102 |
4038 | msgid "DSA" |
4039 | msgstr "DSA" |
4040 | |
4041 | -#: ../egg/egg-oid.c:104 |
4042 | +#: ../egg/egg-oid.c:103 |
4043 | msgid "SHA1 with DSA" |
4044 | msgstr "DSA ile SHA1" |
4045 | |
4046 | #. Extended Key Usages |
4047 | -#: ../egg/egg-oid.c:107 |
4048 | +#: ../egg/egg-oid.c:106 |
4049 | msgid "Server Authentication" |
4050 | msgstr "Sunucu Kimlik Denetimi" |
4051 | |
4052 | -#: ../egg/egg-oid.c:108 |
4053 | +#: ../egg/egg-oid.c:107 |
4054 | msgid "Client Authentication" |
4055 | msgstr "İstemci Kimlik Denetimi" |
4056 | |
4057 | -#: ../egg/egg-oid.c:109 |
4058 | +#: ../egg/egg-oid.c:108 |
4059 | msgid "Code Signing" |
4060 | msgstr "Kod İmzalama" |
4061 | |
4062 | -#: ../egg/egg-oid.c:110 |
4063 | +#: ../egg/egg-oid.c:109 |
4064 | msgid "Email Protection" |
4065 | msgstr "E-posta Koruma" |
4066 | |
4067 | -#: ../egg/egg-oid.c:111 |
4068 | +#: ../egg/egg-oid.c:110 |
4069 | msgid "Time Stamping" |
4070 | msgstr "Zaman Damgalama" |
4071 | |
4072 | -#: ../egg/egg-spawn.c:273 |
4073 | +#: ../egg/egg-spawn.c:272 |
4074 | #, c-format |
4075 | msgid "Unexpected error in select() reading data from a child process (%s)" |
4076 | msgstr "Alt süreçten bilgi okurken select()'te beklenmeyen hata oluştu (%s)" |
4077 | |
4078 | -#: ../egg/egg-spawn.c:320 |
4079 | +#: ../egg/egg-spawn.c:319 |
4080 | #, c-format |
4081 | msgid "Unexpected error in waitpid() (%s)" |
4082 | msgstr "waitpid()'de beklenmedik hata oluştu(%s)" |
4083 | |
4084 | -#: ../pkcs11/gkm/gkm-certificate.c:581 |
4085 | +#: ../pkcs11/gkm/gkm-certificate.c:580 |
4086 | msgid "Unnamed Certificate" |
4087 | msgstr "İsimlendirilmemiş Sertifika" |
4088 | |
4089 | -#: ../pkcs11/ssh-store/gkm-ssh-private-key.c:342 |
4090 | +#: ../pkcs11/ssh-store/gkm-ssh-private-key.c:341 |
4091 | msgid "Couldn't parse public SSH key" |
4092 | msgstr "Genel SSH anahtarı ayrıştırılamadı" |
4093 | |
4094 | #. Get the label ready |
4095 | -#: ../pkcs11/wrap-layer/gkm-wrap-login.c:346 |
4096 | +#: ../pkcs11/wrap-layer/gkm-wrap-login.c:345 |
4097 | #, c-format |
4098 | msgid "Unlock password for: %s" |
4099 | msgstr "Şunun için kilit açma şifresi: %s" |
4100 | |
4101 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:591 |
4102 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:590 |
4103 | msgid "Unlock Login Keyring" |
4104 | msgstr "Giriş Anahtarlık Kilidini Kaldır" |
4105 | |
4106 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:593 |
4107 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:592 |
4108 | msgid "Enter password to unlock your login keyring" |
4109 | msgstr "Giriş anahtarlığınızı açmak için parolayı girin" |
4110 | |
4111 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:597 |
4112 | -#, fuzzy |
4113 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:596 |
4114 | msgid "" |
4115 | "The password you use to log in to your computer no longer matches that of " |
4116 | "your login keyring." |
4117 | msgstr "" |
4118 | -"Bilgisayarınıza giriş yamak için kullandığınız şifre artık giriş " |
4119 | +"Bilgisayarınıza giriş yapmak için kullandığınız parola artık giriş " |
4120 | "anahtarlığınızla uyuşmuyor." |
4121 | |
4122 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:599 |
4123 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:598 |
4124 | msgid "" |
4125 | "The login keyring did not get unlocked when you logged into your computer." |
4126 | msgstr "Giriş anahtarlığı, bilgisayarınıza giriş yaptığınızda açılmadı." |
4127 | |
4128 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:617 |
4129 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:616 |
4130 | msgid "Unlock Keyring" |
4131 | msgstr "Anahtarlık Kilidini Aç" |
4132 | |
4133 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:619 |
4134 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:618 |
4135 | #, c-format |
4136 | msgid "Enter password for keyring '%s' to unlock" |
4137 | msgstr "'%s' anahtarlık kilidini açmak için parola girin" |
4138 | |
4139 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:623 |
4140 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:622 |
4141 | #, c-format |
4142 | msgid "An application wants access to the keyring '%s', but it is locked" |
4143 | msgstr "" |
4144 | "Bir uygulama '%s' anahtarlığına erişmek istiyor, ancak anahtarlık kilitli" |
4145 | |
4146 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:629 |
4147 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:628 |
4148 | msgid "Automatically unlock this keyring whenever I'm logged in" |
4149 | msgstr "Her oturum açtığımda, bu anahtarlığın kilidini otomatik olarak aç" |
4150 | |
4151 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:640 |
4152 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:639 |
4153 | msgid "Unlock private key" |
4154 | msgstr "Özel anahtarın kilidini kaldır" |
4155 | |
4156 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:642 |
4157 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:641 |
4158 | msgid "Unlock certificate" |
4159 | msgstr "Sertifikanın kilidini kaldır" |
4160 | |
4161 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:644 |
4162 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:643 |
4163 | msgid "Unlock public key" |
4164 | msgstr "Genel anahtarın kilidini kaldır" |
4165 | |
4166 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:655 |
4167 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:654 |
4168 | msgid "Enter password to unlock the private key" |
4169 | msgstr "Özel anahtarlık kilidini açmak için parola girin" |
4170 | |
4171 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:657 |
4172 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:656 |
4173 | msgid "Enter password to unlock the certificate" |
4174 | msgstr "Sertifikanın kilidini açmak için parola girin" |
4175 | |
4176 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:659 |
4177 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:658 |
4178 | msgid "Enter password to unlock the public key" |
4179 | msgstr "Genel anahtarlık kilidini açmak için parola girin" |
4180 | |
4181 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:661 |
4182 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:660 |
4183 | msgid "Enter password to unlock" |
4184 | msgstr "Kilidini açmak için parola girin" |
4185 | |
4186 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:671 |
4187 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:670 |
4188 | msgid "Automatically unlock this key whenever I'm logged in" |
4189 | msgstr "Her oturum açtığımda, bu anahtarın kilidini otomatik olarak aç" |
4190 | |
4191 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:673 |
4192 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:672 |
4193 | msgid "Automatically unlock this certificate whenever I'm logged in" |
4194 | msgstr "Her oturum açtığımda, bu sertifikanın kilidini otomatik olarak aç" |
4195 | |
4196 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:675 |
4197 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:797 |
4198 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1141 |
4199 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1289 |
4200 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:674 |
4201 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:796 |
4202 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1160 |
4203 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1309 |
4204 | msgid "Automatically unlock whenever I'm logged in" |
4205 | msgstr "Her oturum açtığımda, kilidi otomatik olarak aç" |
4206 | |
4207 | #. TRANSLATORS: The private key is locked |
4208 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:686 |
4209 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:685 |
4210 | #, c-format |
4211 | msgid "An application wants access to the private key '%s', but it is locked" |
4212 | msgstr "" |
4213 | @@ -479,7 +478,7 @@ |
4214 | "anahtarlık kilitli" |
4215 | |
4216 | #. TRANSLATORS: The certificate is locked |
4217 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:689 |
4218 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:688 |
4219 | #, c-format |
4220 | msgid "An application wants access to the certificate '%s', but it is locked" |
4221 | msgstr "" |
4222 | @@ -487,7 +486,7 @@ |
4223 | "kilitli" |
4224 | |
4225 | #. TRANSLATORS: The public key is locked |
4226 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:692 |
4227 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:691 |
4228 | #, c-format |
4229 | msgid "An application wants access to the public key '%s', but it is locked" |
4230 | msgstr "" |
4231 | @@ -495,28 +494,28 @@ |
4232 | "anahtarlık kilitli" |
4233 | |
4234 | #. TRANSLATORS: The object '%s' is locked |
4235 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:695 |
4236 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:694 |
4237 | #, c-format |
4238 | msgid "An application wants access to '%s', but it is locked" |
4239 | msgstr "" |
4240 | "Bilinmeyen bir uygulama '%s' anahtarlığa ulaşmak istiyor, fakat anahtarlık " |
4241 | "kilitli" |
4242 | |
4243 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:766 |
4244 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:765 |
4245 | msgid "The unlock password was incorrect" |
4246 | msgstr "Kilit açma parolası hatalı" |
4247 | |
4248 | #. Build up the prompt |
4249 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:787 |
4250 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:786 |
4251 | msgid "Unlock certificate/key storage" |
4252 | msgstr "Sertifika/anahtar deposu kilidini aç" |
4253 | |
4254 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:788 |
4255 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:787 |
4256 | msgid "Enter password to unlock the certificate/key storage" |
4257 | msgstr "Sertifika/anahtar deposu kilidini açmak için parolanızı girin" |
4258 | |
4259 | #. TRANSLATORS: The storage is locked, and needs unlocking before the application can use it. |
4260 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:791 |
4261 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:790 |
4262 | #, c-format |
4263 | msgid "" |
4264 | "An application wants access to the certificate/key storage '%s', but it is " |
4265 | @@ -524,15 +523,15 @@ |
4266 | msgstr "" |
4267 | "Bir uygulama sertifika/anahtar deposu '%s' için erişim istiyor, ancak kilitli" |
4268 | |
4269 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1132 |
4270 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1151 |
4271 | msgid "New Password Required" |
4272 | msgstr "Yeni Parola Gerekli" |
4273 | |
4274 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1133 |
4275 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1152 |
4276 | msgid "New password required for secure storage" |
4277 | msgstr "Güvenli depolama için yeni parola gerekli" |
4278 | |
4279 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1135 |
4280 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1154 |
4281 | #, c-format |
4282 | msgid "" |
4283 | "In order to prepare '%s' for storage of certificates or keys, a password is " |
4284 | @@ -540,40 +539,40 @@ |
4285 | msgstr "" |
4286 | "'%s' parola ya da anahtar depolamaya hazırlamak için bir parola gereklidir" |
4287 | |
4288 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1249 |
4289 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1280 |
4290 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1269 |
4291 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1300 |
4292 | msgid "Change Password" |
4293 | msgstr "Parolayı Değiştir" |
4294 | |
4295 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1250 |
4296 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1270 |
4297 | msgid "Original password for secure storage" |
4298 | msgstr "Güvenli depolama için asıl parola" |
4299 | |
4300 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1252 |
4301 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1272 |
4302 | #, c-format |
4303 | msgid "To change the password for '%s', the original password is required" |
4304 | msgstr "'%s' parolasını değiştirmek için, asıl parola gereklidir" |
4305 | |
4306 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1281 |
4307 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1301 |
4308 | msgid "Change password for secure storage" |
4309 | msgstr "Güvenli depolama için parolayı değiştir" |
4310 | |
4311 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1283 |
4312 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1303 |
4313 | #, c-format |
4314 | msgid "Type a new password for '%s'" |
4315 | msgstr "'%s' için yeni bir parola yazın" |
4316 | |
4317 | -#: ../tool/gkr-tool.c:102 |
4318 | +#: ../tool/gkr-tool.c:100 |
4319 | #, c-format |
4320 | msgid "usage: gnome-keyring command [options]\n" |
4321 | msgstr "kullanımı: gnome-keyring komutu [seçenekler]\n" |
4322 | |
4323 | -#: ../tool/gkr-tool.c:104 |
4324 | +#: ../tool/gkr-tool.c:102 |
4325 | msgid "commands: " |
4326 | msgstr "komutlar: " |
4327 | |
4328 | #. Translators: keep same length as translated message "commands: " |
4329 | -#: ../tool/gkr-tool.c:108 |
4330 | +#: ../tool/gkr-tool.c:106 |
4331 | msgid " " |
4332 | msgstr " " |
4333 | |
4334 | |
4335 | === modified file 'po/vi.po' |
4336 | --- po/vi.po 2012-09-04 09:25:05 +0000 |
4337 | +++ po/vi.po 2015-02-27 19:55:06 +0000 |
4338 | @@ -1,28 +1,32 @@ |
4339 | # Vietnamese translation of GNOME Keyring. |
4340 | -# Copyright © 2010 GNOME i18n Project for Vietnamese. |
4341 | +# Copyright © 2014 GNOME i18n Project for Vietnamese. |
4342 | +# This file is distributed under the same license as the gnome-keyring package. |
4343 | # Nguyễn Thái Ngọc Duy <pclouds@gmail.com>, 2004,2008,2011-2012. |
4344 | # Clytie Siddall <clytie@riverland.net.au>, 2005-2010. |
4345 | # Nguyen Vu Hung <vuhung16plus@gmail.com>, 2011. |
4346 | +# Trần Ngọc Quân <vnwildman@gmail.com>, 2014. |
4347 | +# |
4348 | msgid "" |
4349 | msgstr "" |
4350 | -"Project-Id-Version: gnome-keyring 2.26.3\n" |
4351 | +"Project-Id-Version: gnome-keyring master\n" |
4352 | "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" |
4353 | "keyring&keywords=I18N+L10N&component=general\n" |
4354 | -"POT-Creation-Date: 2012-03-08 19:47+0000\n" |
4355 | -"PO-Revision-Date: 2012-09-01 17:12+0700\n" |
4356 | -"Last-Translator: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n" |
4357 | -"Language-Team: Vietnamese <vi-VN@googlegroups.com>\n" |
4358 | +"POT-Creation-Date: 2014-11-20 20:13+0000\n" |
4359 | +"PO-Revision-Date: 2014-11-21 14:15+0700\n" |
4360 | +"Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n" |
4361 | +"Language-Team: Vietnamese <gnome-vi-list@gnome.org>\n" |
4362 | +"Language: vi\n" |
4363 | "MIME-Version: 1.0\n" |
4364 | "Content-Type: text/plain; charset=UTF-8\n" |
4365 | "Content-Transfer-Encoding: 8bit\n" |
4366 | "Plural-Forms: nplurals=1; plural=0;\n" |
4367 | -"X-Generator: LocFactoryEditor 1.8\n" |
4368 | +"X-Generator: Poedit 1.5.5\n" |
4369 | |
4370 | #. TRANSLATORS: This is the label for an keyring created without a label |
4371 | #: ../daemon/dbus/gkd-secret-change.c:85 |
4372 | #: ../daemon/dbus/gkd-secret-change.c:121 |
4373 | -#: ../daemon/dbus/gkd-secret-create.c:79 |
4374 | -#: ../pkcs11/secret-store/gkm-secret-collection.c:325 |
4375 | +#: ../daemon/dbus/gkd-secret-create.c:78 |
4376 | +#: ../pkcs11/secret-store/gkm-secret-collection.c:324 |
4377 | #: ../pkcs11/wrap-layer/gkm-wrap-login.c:345 |
4378 | #: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:753 |
4379 | msgid "Unnamed" |
4380 | @@ -30,35 +34,31 @@ |
4381 | |
4382 | #: ../daemon/dbus/gkd-secret-change.c:90 |
4383 | #, c-format |
4384 | -#| msgid "Choose a new password for the '%s' keyring" |
4385 | msgid "Enter the old password for the '%s' keyring" |
4386 | -msgstr "Nhập mật khẩu cũ cho vòng khóa '%s'" |
4387 | +msgstr "Nhập mật khẩu cũ cho chùm chìa khóa “%s”" |
4388 | |
4389 | #: ../daemon/dbus/gkd-secret-change.c:94 |
4390 | #, c-format |
4391 | -#| msgid "" |
4392 | -#| "An application wants to change the password for the '%s' keyring. Choose " |
4393 | -#| "the new password you want to use for it." |
4394 | msgid "" |
4395 | "An application wants to change the password for the '%s' keyring. Enter the " |
4396 | "old password for it." |
4397 | msgstr "" |
4398 | -"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 " |
4399 | -"nó." |
4400 | +"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 " |
4401 | +"cũ của nó." |
4402 | |
4403 | #: ../daemon/dbus/gkd-secret-change.c:100 |
4404 | #: ../daemon/dbus/gkd-secret-change.c:136 |
4405 | -#: ../daemon/dbus/gkd-secret-change.c:146 |
4406 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1143 |
4407 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1255 |
4408 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1290 |
4409 | +#: ../daemon/dbus/gkd-secret-change.c:147 |
4410 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1163 |
4411 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1276 |
4412 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1311 |
4413 | msgid "Continue" |
4414 | msgstr "Tiếp tục" |
4415 | |
4416 | #: ../daemon/dbus/gkd-secret-change.c:126 |
4417 | #, c-format |
4418 | msgid "Choose a new password for the '%s' keyring" |
4419 | -msgstr "Hãy chọn một mật khẩu mới cho vòng khóa '%s'" |
4420 | +msgstr "Hãy chọn một mật khẩu mới cho chùm chìa khóa “%s”" |
4421 | |
4422 | #: ../daemon/dbus/gkd-secret-change.c:130 |
4423 | #, c-format |
4424 | @@ -66,48 +66,48 @@ |
4425 | "An application wants to change the password for the '%s' keyring. Choose the " |
4426 | "new password you want to use for it." |
4427 | msgstr "" |
4428 | -"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 " |
4429 | -"cần sử dụng với nó." |
4430 | +"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 " |
4431 | +"khẩu cần sử dụng với nó." |
4432 | |
4433 | -#: ../daemon/dbus/gkd-secret-change.c:142 |
4434 | -#: ../daemon/dbus/gkd-secret-create.c:95 |
4435 | +#: ../daemon/dbus/gkd-secret-change.c:143 |
4436 | +#: ../daemon/dbus/gkd-secret-create.c:94 |
4437 | msgid "Store passwords unencrypted?" |
4438 | -msgstr "Lưu mật khẩu không mật mã không?" |
4439 | +msgstr "Lưu mật khẩu không mã hóa không?" |
4440 | |
4441 | -#: ../daemon/dbus/gkd-secret-change.c:144 |
4442 | -#: ../daemon/dbus/gkd-secret-create.c:97 |
4443 | +#: ../daemon/dbus/gkd-secret-change.c:145 |
4444 | +#: ../daemon/dbus/gkd-secret-create.c:96 |
4445 | msgid "" |
4446 | "By choosing to use a blank password, your stored passwords will not be " |
4447 | "safely encrypted. They will be accessible by anyone with access to your " |
4448 | "files." |
4449 | msgstr "" |
4450 | -"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 " |
4451 | -"toàn. Mọi người đều có thể truy cập vào tập tin của bạn." |
4452 | +"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. " |
4453 | +"Mọi người đều có thể truy cập vào tập tin của bạn." |
4454 | |
4455 | -#: ../daemon/dbus/gkd-secret-change.c:152 |
4456 | +#: ../daemon/dbus/gkd-secret-change.c:153 |
4457 | msgid "The original password was incorrect" |
4458 | msgstr "Bạn đã gõ sai mật khẩu gốc" |
4459 | |
4460 | -#: ../daemon/dbus/gkd-secret-change.c:352 |
4461 | +#: ../daemon/dbus/gkd-secret-change.c:354 |
4462 | msgid "Change Keyring Password" |
4463 | -msgstr "Đổi mật khẩu vòng khóa" |
4464 | +msgstr "Đổi mật khẩu chùm chìa khóa" |
4465 | |
4466 | -#: ../daemon/dbus/gkd-secret-create.c:81 |
4467 | +#: ../daemon/dbus/gkd-secret-create.c:80 |
4468 | #, c-format |
4469 | msgid "" |
4470 | "An application wants to create a new keyring called '%s'. Choose the " |
4471 | "password you want to use for it." |
4472 | msgstr "" |
4473 | -"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ử " |
4474 | -"dụng với nó." |
4475 | +"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à " |
4476 | +"bạn muốn áp dụng cho nó." |
4477 | |
4478 | -#: ../daemon/dbus/gkd-secret-create.c:85 |
4479 | +#: ../daemon/dbus/gkd-secret-create.c:84 |
4480 | msgid "Choose password for new keyring" |
4481 | -msgstr "Hãy chọn mật khẩu cho vòng khóa mới" |
4482 | +msgstr "Hãy chọn mật khẩu cho chùm chìa khóa mới" |
4483 | |
4484 | -#: ../daemon/dbus/gkd-secret-create.c:308 |
4485 | +#: ../daemon/dbus/gkd-secret-create.c:311 |
4486 | msgid "New Keyring Password" |
4487 | -msgstr "Mật khẩu vòng khóa mới" |
4488 | +msgstr "Mật khẩu chùm chìa khóa mới" |
4489 | |
4490 | #: ../daemon/gnome-keyring-gpg.desktop.in.in.h:1 |
4491 | msgid "GPG Password Agent" |
4492 | @@ -115,47 +115,42 @@ |
4493 | |
4494 | #: ../daemon/gnome-keyring-gpg.desktop.in.in.h:2 |
4495 | msgid "GNOME Keyring: GPG Agent" |
4496 | -msgstr "Vòng Khoá GNOME: GPG Agent" |
4497 | +msgstr "Chùm chìa khóa GNOME: Đại diện GPG" |
4498 | |
4499 | #: ../daemon/gnome-keyring-pkcs11.desktop.in.in.h:1 |
4500 | msgid "Certificate and Key Storage" |
4501 | -msgstr "Lưu trữ Chứng nhận và Khoá" |
4502 | +msgstr "Lưu trữ Chứng nhận và khóa" |
4503 | |
4504 | #: ../daemon/gnome-keyring-pkcs11.desktop.in.in.h:2 |
4505 | msgid "GNOME Keyring: PKCS#11 Component" |
4506 | -msgstr "Vòng Khoá GNOME: thành phần PKCS#11" |
4507 | +msgstr "Chùm chìa khóa GNOME: thành phần PKCS#11" |
4508 | |
4509 | #: ../daemon/gnome-keyring-secrets.desktop.in.in.h:1 |
4510 | msgid "Secret Storage Service" |
4511 | -msgstr "Dịch vụ lưu trữ mật" |
4512 | +msgstr "Dịch vụ lưu trữ bảo mật" |
4513 | |
4514 | #: ../daemon/gnome-keyring-secrets.desktop.in.in.h:2 |
4515 | msgid "GNOME Keyring: Secret Service" |
4516 | -msgstr "Vòng Khoá GNOME: dịch vụ mật" |
4517 | +msgstr "Chùm chìa khóa GNOME: dịch vụ bảo mật" |
4518 | |
4519 | #: ../daemon/gnome-keyring-ssh.desktop.in.in.h:1 |
4520 | msgid "SSH Key Agent" |
4521 | -msgstr "Tác nhân khoá SSH" |
4522 | +msgstr "Đại diện khóa SSH" |
4523 | |
4524 | #: ../daemon/gnome-keyring-ssh.desktop.in.in.h:2 |
4525 | msgid "GNOME Keyring: SSH Agent" |
4526 | -msgstr "Vòng Khoá GNOME: SSH Agent" |
4527 | +msgstr "Chùm chìa khóa GNOME: Đại diện SSH" |
4528 | |
4529 | -#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:106 |
4530 | +#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:82 |
4531 | msgid "Unknown" |
4532 | msgstr "Không biết" |
4533 | |
4534 | -#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:203 |
4535 | -#, c-format |
4536 | -msgid "PGP Key: %s" |
4537 | -msgstr "Khóa PGP: %s" |
4538 | - |
4539 | -#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:360 |
4540 | -#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:361 |
4541 | +#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:144 |
4542 | +#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:145 |
4543 | msgid "Enter Passphrase" |
4544 | msgstr "Nhập mật mã" |
4545 | |
4546 | -#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:365 |
4547 | +#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:149 |
4548 | #: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:602 |
4549 | #: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:630 |
4550 | #: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:645 |
4551 | @@ -163,32 +158,36 @@ |
4552 | #: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:767 |
4553 | #: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:799 |
4554 | msgid "Unlock" |
4555 | -msgstr "Mở khoá" |
4556 | +msgstr "Mở khóa" |
4557 | |
4558 | -#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:394 |
4559 | -#| msgid "Automatically unlock this keyring whenever I'm logged in" |
4560 | +#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:162 |
4561 | msgid "Automatically unlock this key, whenever I'm logged in" |
4562 | -msgstr "Tự động gỡ khoá khoá này khi nào tôi đã đăng nhập" |
4563 | +msgstr "Tự động gỡ khóa khóa này khi nào tôi đã đăng nhập" |
4564 | + |
4565 | +#: ../daemon/gpg-agent/gkd-gpg-agent-ops.c:225 |
4566 | +#, c-format |
4567 | +msgid "PGP Key: %s" |
4568 | +msgstr "Khóa PGP: %s" |
4569 | |
4570 | #. TRANSLATORS: This is the display label for the login keyring |
4571 | -#: ../daemon/login/gkd-login.c:145 |
4572 | +#: ../daemon/login/gkd-login.c:158 |
4573 | msgid "Login" |
4574 | msgstr "Đăng nhập" |
4575 | |
4576 | #: ../egg/dotlock.c:668 |
4577 | #, c-format |
4578 | msgid "failed to create temporary file `%s': %s\n" |
4579 | -msgstr "lỗi tạo tập tin tạm `%s': %s\n" |
4580 | +msgstr "gặp lỗi khi tạo tập tin tạm “%s”: %s\n" |
4581 | |
4582 | #: ../egg/dotlock.c:718 |
4583 | #, c-format |
4584 | msgid "error writing to `%s': %s\n" |
4585 | -msgstr "lỗi ghi vào `%s': %s\n" |
4586 | +msgstr "gặp lỗi khi ghi vào “%s”: %s\n" |
4587 | |
4588 | #: ../egg/dotlock.c:782 |
4589 | #, c-format |
4590 | msgid "can't create `%s': %s\n" |
4591 | -msgstr "lỗi tạo `%s': %s\n" |
4592 | +msgstr "Không thể tạo “%s”: %s\n" |
4593 | |
4594 | #. Note: It is unlikley that we get a race here unless a pid is |
4595 | #. reused too fast or a new process with the same pid as the one |
4596 | @@ -196,201 +195,203 @@ |
4597 | #: ../egg/dotlock.c:1048 |
4598 | #, c-format |
4599 | msgid "removing stale lockfile (created by %d)\n" |
4600 | -msgstr "bỏ tập tin khoá không còn dùng (tạo bởi %d)\n" |
4601 | +msgstr "xóa bỏ tập tin khóa đã hỏng (được tạo bởi %d)\n" |
4602 | |
4603 | #: ../egg/dotlock.c:1084 |
4604 | #, c-format |
4605 | msgid "waiting for lock (held by %d%s) %s...\n" |
4606 | -msgstr "chờ khoá (giữ bởi %d%s) %s...\n" |
4607 | +msgstr "chờ khóa (được giữ bởi %d%s) %s...\n" |
4608 | |
4609 | +# http://vi.wikipedia.org/wiki/Deadlock |
4610 | +# 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. |
4611 | #: ../egg/dotlock.c:1085 |
4612 | msgid "(deadlock?) " |
4613 | -msgstr "" |
4614 | +msgstr "(khóa chết?)" |
4615 | |
4616 | #: ../egg/dotlock.c:1124 |
4617 | #, c-format |
4618 | msgid "lock `%s' not made: %s\n" |
4619 | -msgstr "khoá `%s' chưa được tạo: %s\n" |
4620 | +msgstr "khóa “%s” chưa được tạo: %s\n" |
4621 | |
4622 | #: ../egg/dotlock.c:1150 |
4623 | #, c-format |
4624 | msgid "waiting for lock %s...\n" |
4625 | -msgstr "chờ khoá %s...\n" |
4626 | +msgstr "chờ khóa %s...\n" |
4627 | |
4628 | -#: ../egg/egg-oid.c:41 |
4629 | +#: ../egg/egg-oid.c:40 |
4630 | msgid "Domain Component" |
4631 | -msgstr "Thành phần Miền" |
4632 | +msgstr "Thành phần tên miền" |
4633 | |
4634 | -#: ../egg/egg-oid.c:43 |
4635 | +#: ../egg/egg-oid.c:42 |
4636 | msgid "User ID" |
4637 | msgstr "Mã số người dùng" |
4638 | |
4639 | -#: ../egg/egg-oid.c:46 |
4640 | +#: ../egg/egg-oid.c:45 |
4641 | msgid "Email Address" |
4642 | msgstr "Thư điện tử" |
4643 | |
4644 | -#: ../egg/egg-oid.c:54 |
4645 | +#: ../egg/egg-oid.c:53 |
4646 | msgid "Date of Birth" |
4647 | msgstr "Ngày sinh" |
4648 | |
4649 | -#: ../egg/egg-oid.c:56 |
4650 | +#: ../egg/egg-oid.c:55 |
4651 | msgid "Place of Birth" |
4652 | msgstr "Nơi sinh" |
4653 | |
4654 | -#: ../egg/egg-oid.c:58 |
4655 | +#: ../egg/egg-oid.c:57 |
4656 | msgid "Gender" |
4657 | msgstr "Giới tính" |
4658 | |
4659 | -#: ../egg/egg-oid.c:60 |
4660 | +#: ../egg/egg-oid.c:59 |
4661 | msgid "Country of Citizenship" |
4662 | msgstr "Quốc gia cấp công dân" |
4663 | |
4664 | -#: ../egg/egg-oid.c:62 |
4665 | +#: ../egg/egg-oid.c:61 |
4666 | msgid "Country of Residence" |
4667 | msgstr "Quốc gia ở" |
4668 | |
4669 | -#: ../egg/egg-oid.c:65 |
4670 | +#: ../egg/egg-oid.c:64 |
4671 | msgid "Common Name" |
4672 | msgstr "Tên chung" |
4673 | |
4674 | -#: ../egg/egg-oid.c:67 |
4675 | +#: ../egg/egg-oid.c:66 |
4676 | msgid "Surname" |
4677 | msgstr "Họ" |
4678 | |
4679 | -#: ../egg/egg-oid.c:69 |
4680 | +#: ../egg/egg-oid.c:68 |
4681 | msgid "Serial Number" |
4682 | msgstr "Số thứ tự" |
4683 | |
4684 | -#: ../egg/egg-oid.c:71 |
4685 | +#: ../egg/egg-oid.c:70 |
4686 | msgid "Country" |
4687 | msgstr "Quốc gia" |
4688 | |
4689 | -#: ../egg/egg-oid.c:73 |
4690 | +#: ../egg/egg-oid.c:72 |
4691 | msgid "Locality" |
4692 | msgstr "Vùng" |
4693 | |
4694 | -#: ../egg/egg-oid.c:75 |
4695 | +#: ../egg/egg-oid.c:74 |
4696 | msgid "State" |
4697 | msgstr "Tỉnh" |
4698 | |
4699 | -#: ../egg/egg-oid.c:77 |
4700 | +#: ../egg/egg-oid.c:76 |
4701 | msgid "Street" |
4702 | msgstr "Đường" |
4703 | |
4704 | -#: ../egg/egg-oid.c:79 |
4705 | +#: ../egg/egg-oid.c:78 |
4706 | msgid "Organization" |
4707 | msgstr "Tổ chức" |
4708 | |
4709 | -#: ../egg/egg-oid.c:81 |
4710 | +#: ../egg/egg-oid.c:80 |
4711 | msgid "Organizational Unit" |
4712 | msgstr "Đơn vị tổ chức" |
4713 | |
4714 | -#: ../egg/egg-oid.c:83 |
4715 | +#: ../egg/egg-oid.c:82 |
4716 | msgid "Title" |
4717 | msgstr "Tuổi tác" |
4718 | |
4719 | -#: ../egg/egg-oid.c:85 |
4720 | +#: ../egg/egg-oid.c:84 |
4721 | msgid "Telephone Number" |
4722 | msgstr "Số điện thoại" |
4723 | |
4724 | -#: ../egg/egg-oid.c:87 |
4725 | +#: ../egg/egg-oid.c:86 |
4726 | msgid "Given Name" |
4727 | msgstr "Tên hay gọi" |
4728 | |
4729 | -#: ../egg/egg-oid.c:89 |
4730 | +#: ../egg/egg-oid.c:88 |
4731 | msgid "Initials" |
4732 | msgstr "Tên viết tắt" |
4733 | |
4734 | -#: ../egg/egg-oid.c:91 |
4735 | +#: ../egg/egg-oid.c:90 |
4736 | msgid "Generation Qualifier" |
4737 | msgstr "Thế hệ dè dặt" |
4738 | |
4739 | -#: ../egg/egg-oid.c:93 |
4740 | +#: ../egg/egg-oid.c:92 |
4741 | msgid "DN Qualifier" |
4742 | msgstr "Tên miền dè dặt" |
4743 | |
4744 | -#: ../egg/egg-oid.c:95 |
4745 | +#: ../egg/egg-oid.c:94 |
4746 | msgid "Pseudonym" |
4747 | msgstr "Biệt hiệu" |
4748 | |
4749 | -#: ../egg/egg-oid.c:98 |
4750 | +#: ../egg/egg-oid.c:97 |
4751 | msgid "RSA" |
4752 | msgstr "RSA" |
4753 | |
4754 | -#: ../egg/egg-oid.c:99 |
4755 | +#: ../egg/egg-oid.c:98 |
4756 | msgid "MD2 with RSA" |
4757 | msgstr "MD2 với mã hoá RSA" |
4758 | |
4759 | -#: ../egg/egg-oid.c:100 |
4760 | +#: ../egg/egg-oid.c:99 |
4761 | msgid "MD5 with RSA" |
4762 | msgstr "MD5 với mã hoá RSA" |
4763 | |
4764 | -#: ../egg/egg-oid.c:101 |
4765 | +#: ../egg/egg-oid.c:100 |
4766 | msgid "SHA1 with RSA" |
4767 | msgstr "SHA1 với mã hoá RSA" |
4768 | |
4769 | -#: ../egg/egg-oid.c:103 |
4770 | +#: ../egg/egg-oid.c:102 |
4771 | msgid "DSA" |
4772 | msgstr "DSA" |
4773 | |
4774 | -#: ../egg/egg-oid.c:104 |
4775 | +#: ../egg/egg-oid.c:103 |
4776 | msgid "SHA1 with DSA" |
4777 | msgstr "SHA1 với mã hoá DSA" |
4778 | |
4779 | #. Extended Key Usages |
4780 | -#: ../egg/egg-oid.c:107 |
4781 | +#: ../egg/egg-oid.c:106 |
4782 | msgid "Server Authentication" |
4783 | msgstr "Xác thực máy chủ" |
4784 | |
4785 | -#: ../egg/egg-oid.c:108 |
4786 | +#: ../egg/egg-oid.c:107 |
4787 | msgid "Client Authentication" |
4788 | msgstr "Xác thực máy khách" |
4789 | |
4790 | -#: ../egg/egg-oid.c:109 |
4791 | +#: ../egg/egg-oid.c:108 |
4792 | msgid "Code Signing" |
4793 | msgstr "Ký mã" |
4794 | |
4795 | -#: ../egg/egg-oid.c:110 |
4796 | +#: ../egg/egg-oid.c:109 |
4797 | msgid "Email Protection" |
4798 | msgstr "Bảo vệ thư" |
4799 | |
4800 | -#: ../egg/egg-oid.c:111 |
4801 | +#: ../egg/egg-oid.c:110 |
4802 | msgid "Time Stamping" |
4803 | -msgstr "Tem thời gian" |
4804 | +msgstr "Dấu vết thời gian" |
4805 | |
4806 | -#: ../egg/egg-spawn.c:273 |
4807 | +#: ../egg/egg-spawn.c:272 |
4808 | #, c-format |
4809 | msgid "Unexpected error in select() reading data from a child process (%s)" |
4810 | msgstr "" |
4811 | -"Gặp lỗi bất thường trong « select() » khi đọc dữ liệu từ một tiến trình con " |
4812 | +"Gặp lỗi bất thường trong “select()” khi đọc dữ liệu từ một tiến trình con " |
4813 | "(%s)" |
4814 | |
4815 | -#: ../egg/egg-spawn.c:320 |
4816 | +#: ../egg/egg-spawn.c:319 |
4817 | #, c-format |
4818 | msgid "Unexpected error in waitpid() (%s)" |
4819 | -msgstr "Gặp lỗi bất thường trong « waitpid() » (%s)" |
4820 | +msgstr "Gặp lỗi bất thường trong “waitpid()” (%s)" |
4821 | |
4822 | -#: ../pkcs11/gkm/gkm-certificate.c:572 |
4823 | +#: ../pkcs11/gkm/gkm-certificate.c:580 |
4824 | msgid "Unnamed Certificate" |
4825 | msgstr "Chứng nhận không tên" |
4826 | |
4827 | -#: ../pkcs11/ssh-store/gkm-ssh-private-key.c:339 |
4828 | +#: ../pkcs11/ssh-store/gkm-ssh-private-key.c:341 |
4829 | msgid "Couldn't parse public SSH key" |
4830 | -msgstr "Không thể phân tích cú pháp của khoá SSH công khai" |
4831 | +msgstr "Không thể phân tích cú pháp của khóa SSH công" |
4832 | |
4833 | #. Get the label ready |
4834 | #: ../pkcs11/wrap-layer/gkm-wrap-login.c:345 |
4835 | #, c-format |
4836 | msgid "Unlock password for: %s" |
4837 | -msgstr "Mật khẩu gỡ khoá cho: %s" |
4838 | +msgstr "Mật khẩu gỡ khóa cho: %s" |
4839 | |
4840 | #: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:590 |
4841 | msgid "Unlock Login Keyring" |
4842 | -msgstr "Gỡ khoá vòng khoá đăng nhập" |
4843 | +msgstr "Gỡ khóa chùm chìa khóa đăng nhập" |
4844 | |
4845 | #: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:592 |
4846 | msgid "Enter password to unlock your login keyring" |
4847 | -msgstr "Nhập mật khẩu để gỡ khoá vòng khoá đăng nhập" |
4848 | +msgstr "Nhập mật khẩu để gỡ khóa chùm chìa khóa đăng nhập" |
4849 | |
4850 | #: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:596 |
4851 | msgid "" |
4852 | @@ -398,35 +399,36 @@ |
4853 | "your login keyring." |
4854 | msgstr "" |
4855 | "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 " |
4856 | -"ứng với mật khẩu của vòng khoá đăng nhập." |
4857 | +"ứng với mật khẩu của chùm chìa khóa đăng nhập." |
4858 | |
4859 | #: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:598 |
4860 | msgid "" |
4861 | "The login keyring did not get unlocked when you logged into your computer." |
4862 | msgstr "" |
4863 | -"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." |
4864 | +"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 " |
4865 | +"tính này." |
4866 | |
4867 | #: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:616 |
4868 | msgid "Unlock Keyring" |
4869 | -msgstr "Mở vòng" |
4870 | +msgstr "Mở khóa chùm chìa khóa" |
4871 | |
4872 | #: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:618 |
4873 | #, c-format |
4874 | msgid "Enter password for keyring '%s' to unlock" |
4875 | -msgstr "Hãy nhập mật khẩu cho vòng khóa '%s' để mở vòng khóa" |
4876 | +msgstr "Hãy nhập mật khẩu cho chùm chìa khóa “%s” để mở chùm chìa khóa" |
4877 | |
4878 | #: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:622 |
4879 | #, c-format |
4880 | msgid "An application wants access to the keyring '%s', but it is locked" |
4881 | -msgstr "Một ứng dụng muốn truy cập đến vòng khóa '%s', còn nó bị khoá" |
4882 | +msgstr "Một ứng dụng muốn dùng chùm chìa khóa “%s”, nhưng nó đang bị khóa" |
4883 | |
4884 | #: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:628 |
4885 | msgid "Automatically unlock this keyring whenever I'm logged in" |
4886 | -msgstr "Tự động gỡ khoá vòng khoá này khi nào tôi đã đăng nhập" |
4887 | +msgstr "Tự động gỡ khóa chùm chìa khóa này khi nào tôi đã đăng nhập" |
4888 | |
4889 | #: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:639 |
4890 | msgid "Unlock private key" |
4891 | -msgstr "Mở khoá cá nhân" |
4892 | +msgstr "Mở khóa riêng" |
4893 | |
4894 | #: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:641 |
4895 | msgid "Unlock certificate" |
4896 | @@ -434,11 +436,11 @@ |
4897 | |
4898 | #: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:643 |
4899 | msgid "Unlock public key" |
4900 | -msgstr "Mở khoá công khai" |
4901 | +msgstr "Mở khóa công khai" |
4902 | |
4903 | #: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:654 |
4904 | msgid "Enter password to unlock the private key" |
4905 | -msgstr "Gõ mật khẩu để mở khoá cá nhân" |
4906 | +msgstr "Gõ mật khẩu để mở khóa riêng" |
4907 | |
4908 | #: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:656 |
4909 | msgid "Enter password to unlock the certificate" |
4910 | @@ -446,66 +448,63 @@ |
4911 | |
4912 | #: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:658 |
4913 | msgid "Enter password to unlock the public key" |
4914 | -msgstr "Gõ mật khẩu để mở khoá công khai" |
4915 | +msgstr "Gõ mật khẩu để mở khóa công khai" |
4916 | |
4917 | #: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:660 |
4918 | msgid "Enter password to unlock" |
4919 | -msgstr "Gõ mật khẩu để gỡ khoá" |
4920 | +msgstr "Gõ mật khẩu để gỡ khóa" |
4921 | |
4922 | #: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:670 |
4923 | -#| msgid "Automatically unlock this keyring whenever I'm logged in" |
4924 | msgid "Automatically unlock this key whenever I'm logged in" |
4925 | -msgstr "Tự động gỡ khoá khoá này khi nào tôi đã đăng nhập" |
4926 | +msgstr "Tự động gỡ khóa khóa này khi nào tôi đã đăng nhập" |
4927 | |
4928 | #: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:672 |
4929 | -#| msgid "Automatically unlock this keyring whenever I'm logged in" |
4930 | msgid "Automatically unlock this certificate whenever I'm logged in" |
4931 | -msgstr "Tự động gỡ khoá chứng nhận này khi nào tôi đã đăng nhập" |
4932 | +msgstr "Tự động gỡ khóa chứng nhận này khi nào tôi đã đăng nhập" |
4933 | |
4934 | #: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:674 |
4935 | #: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:796 |
4936 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1140 |
4937 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1288 |
4938 | -#| msgid "Automatically unlock this keyring whenever I'm logged in" |
4939 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1160 |
4940 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1309 |
4941 | msgid "Automatically unlock whenever I'm logged in" |
4942 | -msgstr "Tự động mở khoá khi tôi đăng nhập" |
4943 | +msgstr "Tự động mở khóa khi tôi đăng nhập" |
4944 | |
4945 | #. TRANSLATORS: The private key is locked |
4946 | #: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:685 |
4947 | #, c-format |
4948 | msgid "An application wants access to the private key '%s', but it is locked" |
4949 | -msgstr "Ứng dụng muốn truy cập đến khoá cá nhân %s, nhưng nó đang bị khóa" |
4950 | +msgstr "Ứng dụng muốn dùng khóa riêng “%s”, nhưng nó đang bị khóa" |
4951 | |
4952 | #. TRANSLATORS: The certificate is locked |
4953 | #: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:688 |
4954 | #, c-format |
4955 | msgid "An application wants access to the certificate '%s', but it is locked" |
4956 | -msgstr "Ứng dụng muốn truy cập đến chứng nhận %s, nhưng nó đang bị khóa" |
4957 | +msgstr "Ứng dụng muốn dùng chứng nhận “%s”, nhưng nó đang bị khóa" |
4958 | |
4959 | #. TRANSLATORS: The public key is locked |
4960 | #: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:691 |
4961 | #, c-format |
4962 | msgid "An application wants access to the public key '%s', but it is locked" |
4963 | -msgstr "Ứng dụng muốn truy cập đến khoá công khai %s, nhưng nó đang bị khóa" |
4964 | +msgstr "Ứng dụng muốn dùng khóa công khai “%s”, nhưng nó đang bị khóa" |
4965 | |
4966 | #. TRANSLATORS: The object '%s' is locked |
4967 | #: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:694 |
4968 | #, c-format |
4969 | msgid "An application wants access to '%s', but it is locked" |
4970 | -msgstr "Ứng dụng muốn truy cập đến '%s', nhưng nó bị khóa" |
4971 | +msgstr "Ứng dụng muốn dùng “%s”, nhưng nó đang bị khóa" |
4972 | |
4973 | #: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:765 |
4974 | msgid "The unlock password was incorrect" |
4975 | -msgstr "Bạn đã gõ sai mật khẩu gỡ khoá" |
4976 | +msgstr "Bạn đã gõ sai mật khẩu gỡ khóa" |
4977 | |
4978 | #. Build up the prompt |
4979 | #: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:786 |
4980 | msgid "Unlock certificate/key storage" |
4981 | -msgstr "Mở khoá lưu trữ chứng nhận/khoá" |
4982 | +msgstr "Mở khóa lưu trữ chứng nhận/khóa" |
4983 | |
4984 | #: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:787 |
4985 | msgid "Enter password to unlock the certificate/key storage" |
4986 | -msgstr "Nhập mật khẩu để mở khoá kho lưu chứng nhận/khoá" |
4987 | +msgstr "Nhập mật khẩu để mở khóa kho lưu chứng nhận/khóa" |
4988 | |
4989 | #. TRANSLATORS: The storage is locked, and needs unlocking before the application can use it. |
4990 | #: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:790 |
4991 | @@ -514,65 +513,60 @@ |
4992 | "An application wants access to the certificate/key storage '%s', but it is " |
4993 | "locked" |
4994 | msgstr "" |
4995 | -"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ị " |
4996 | +"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ị " |
4997 | "khóa" |
4998 | |
4999 | -#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1131 |
5000 | +#: ../pkcs11/wrap-layer/gkm-wrap-prompt.c:1151 |
The diff has been truncated for viewing.
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)