From: corinna Date: Mon, 15 Dec 2008 18:05:50 +0000 (+0000) Subject: * setpwd.cc (client_request_setpwd::serve): Don't treat removing X-Git-Tag: cgen-snapshot-20091101~4456 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=5f0911e8bfb49d11e9053769b2fc1b66d2a64d55;p=pf3gnuchains%2Fpf3gnuchains4x.git * setpwd.cc (client_request_setpwd::serve): Don't treat removing non-existant private data as error. --- diff --git a/winsup/cygserver/ChangeLog b/winsup/cygserver/ChangeLog index 04054741ba..3f8566fd5a 100644 --- a/winsup/cygserver/ChangeLog +++ b/winsup/cygserver/ChangeLog @@ -1,5 +1,10 @@ 2008-12-15 Corinna Vinschen + * setpwd.cc (client_request_setpwd::serve): Don't treat removing + non-existant private data as error. + +2008-12-15 Corinna Vinschen + * setpwd.cc (client_request_setpwd::serve): Explicitely erase password buffer content after usage. diff --git a/winsup/cygserver/setpwd.cc b/winsup/cygserver/setpwd.cc index 70d96cd57b..8125fd25a0 100644 --- a/winsup/cygserver/setpwd.cc +++ b/winsup/cygserver/setpwd.cc @@ -92,7 +92,9 @@ client_request_setpwd::serve (transport_layer_base *const conn, status = LsaStorePrivateData (lsa, &key, data.Length ? &data : NULL); if (data.Length) memset (data.Buffer, 0, data.Length); - if (NT_SUCCESS (status)) + /* Success or we're trying to remove a password entry which doesn't exist. */ + if (NT_SUCCESS (status) + || (data.Length == 0 && status == STATUS_OBJECT_NAME_NOT_FOUND)) error_code (0); else error_code (LsaNtStatusToWinError (status));