Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
724754da
Commit
724754da
authored
Oct 17, 2013
by
Jacek Caban
Committed by
Alexandre Julliard
Oct 17, 2013
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
crypt32: Moved critical section out of ContextList struct.
parent
6cf1e0d7
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
27 additions
and
28 deletions
+27
-28
context.c
dlls/crypt32/context.c
+10
-16
crypt32_private.h
dlls/crypt32/crypt32_private.h
+3
-3
store.c
dlls/crypt32/store.c
+14
-9
No files found.
dlls/crypt32/context.c
View file @
724754da
...
...
@@ -112,7 +112,6 @@ void Context_CopyProperties(const void *to, const void *from)
struct
ContextList
{
CRITICAL_SECTION
cs
;
struct
list
contexts
;
};
...
...
@@ -122,14 +121,13 @@ struct ContextList *ContextList_Create(void)
if
(
list
)
{
InitializeCriticalSection
(
&
list
->
cs
);
list
->
cs
.
DebugInfo
->
Spare
[
0
]
=
(
DWORD_PTR
)(
__FILE__
": ContextList.cs"
);
list_init
(
&
list
->
contexts
);
}
return
list
;
}
context_t
*
ContextList_Add
(
struct
ContextList
*
list
,
context_t
*
toLink
,
context_t
*
existing
,
struct
WINE_CRYPTCERTSTORE
*
store
,
BOOL
use_link
)
context_t
*
ContextList_Add
(
struct
ContextList
*
list
,
CRITICAL_SECTION
*
cs
,
context_t
*
toLink
,
context_t
*
existing
,
struct
WINE_CRYPTCERTSTORE
*
store
,
BOOL
use_link
)
{
context_t
*
context
;
...
...
@@ -139,7 +137,7 @@ context_t *ContextList_Add(struct ContextList *list, context_t *toLink, context_
if
(
context
)
{
TRACE
(
"adding %p
\n
"
,
context
);
EnterCriticalSection
(
&
list
->
cs
);
EnterCriticalSection
(
cs
);
if
(
existing
)
{
context
->
u
.
entry
.
prev
=
existing
->
u
.
entry
.
prev
;
...
...
@@ -151,17 +149,17 @@ context_t *ContextList_Add(struct ContextList *list, context_t *toLink, context_
}
else
list_add_head
(
&
list
->
contexts
,
&
context
->
u
.
entry
);
LeaveCriticalSection
(
&
list
->
cs
);
LeaveCriticalSection
(
cs
);
}
return
context
;
}
context_t
*
ContextList_Enum
(
struct
ContextList
*
list
,
context_t
*
prev
)
context_t
*
ContextList_Enum
(
struct
ContextList
*
list
,
CRITICAL_SECTION
*
cs
,
context_t
*
prev
)
{
struct
list
*
listNext
;
context_t
*
ret
;
EnterCriticalSection
(
&
list
->
cs
);
EnterCriticalSection
(
cs
);
if
(
prev
)
{
listNext
=
list_next
(
&
list
->
contexts
,
&
prev
->
u
.
entry
);
...
...
@@ -169,7 +167,7 @@ context_t *ContextList_Enum(struct ContextList *list, context_t *prev)
}
else
listNext
=
list_next
(
&
list
->
contexts
,
&
list
->
contexts
);
LeaveCriticalSection
(
&
list
->
cs
);
LeaveCriticalSection
(
cs
);
if
(
listNext
)
{
...
...
@@ -181,18 +179,18 @@ context_t *ContextList_Enum(struct ContextList *list, context_t *prev)
return
ret
;
}
BOOL
ContextList_Remove
(
struct
ContextList
*
list
,
context_t
*
context
)
BOOL
ContextList_Remove
(
struct
ContextList
*
list
,
CRITICAL_SECTION
*
cs
,
context_t
*
context
)
{
BOOL
inList
=
FALSE
;
EnterCriticalSection
(
&
list
->
cs
);
EnterCriticalSection
(
cs
);
if
(
!
list_empty
(
&
context
->
u
.
entry
))
{
list_remove
(
&
context
->
u
.
entry
);
list_init
(
&
context
->
u
.
entry
);
inList
=
TRUE
;
}
LeaveCriticalSection
(
&
list
->
cs
);
LeaveCriticalSection
(
cs
);
return
inList
;
}
...
...
@@ -201,20 +199,16 @@ static void ContextList_Empty(struct ContextList *list)
{
context_t
*
context
,
*
next
;
EnterCriticalSection
(
&
list
->
cs
);
LIST_FOR_EACH_ENTRY_SAFE
(
context
,
next
,
&
list
->
contexts
,
context_t
,
u
.
entry
)
{
TRACE
(
"removing %p
\n
"
,
context
);
list_remove
(
&
context
->
u
.
entry
);
Context_Release
(
context
);
}
LeaveCriticalSection
(
&
list
->
cs
);
}
void
ContextList_Free
(
struct
ContextList
*
list
)
{
ContextList_Empty
(
list
);
list
->
cs
.
DebugInfo
->
Spare
[
0
]
=
0
;
DeleteCriticalSection
(
&
list
->
cs
);
CryptMemFree
(
list
);
}
dlls/crypt32/crypt32_private.h
View file @
724754da
...
...
@@ -440,16 +440,16 @@ struct ContextList;
struct
ContextList
*
ContextList_Create
(
void
)
DECLSPEC_HIDDEN
;
context_t
*
ContextList_Add
(
struct
ContextList
*
list
,
context_t
*
toLink
,
context_t
*
toReplace
,
context_t
*
ContextList_Add
(
struct
ContextList
*
list
,
CRITICAL_SECTION
*
cs
,
context_t
*
toLink
,
context_t
*
toReplace
,
struct
WINE_CRYPTCERTSTORE
*
store
,
BOOL
use_link
)
DECLSPEC_HIDDEN
;
context_t
*
ContextList_Enum
(
struct
ContextList
*
list
,
context_t
*
prev
)
DECLSPEC_HIDDEN
;
context_t
*
ContextList_Enum
(
struct
ContextList
*
list
,
CRITICAL_SECTION
*
cs
,
context_t
*
prev
)
DECLSPEC_HIDDEN
;
/* Removes a context from the list. Returns TRUE if the context was removed,
* or FALSE if not. (The context may have been duplicated, so subsequent
* removes have no effect.)
*/
BOOL
ContextList_Remove
(
struct
ContextList
*
list
,
context_t
*
context
)
DECLSPEC_HIDDEN
;
BOOL
ContextList_Remove
(
struct
ContextList
*
list
,
CRITICAL_SECTION
*
cs
,
context_t
*
context
)
DECLSPEC_HIDDEN
;
void
ContextList_Free
(
struct
ContextList
*
list
)
DECLSPEC_HIDDEN
;
...
...
dlls/crypt32/store.c
View file @
724754da
...
...
@@ -82,6 +82,7 @@ const WINE_CONTEXT_INTERFACE *pCTLInterface = &gCTLInterface;
typedef
struct
_WINE_MEMSTORE
{
WINECRYPT_CERTSTORE
hdr
;
CRITICAL_SECTION
cs
;
struct
ContextList
*
certs
;
struct
ContextList
*
crls
;
struct
ContextList
*
ctls
;
...
...
@@ -150,7 +151,7 @@ static BOOL MemStore_addCert(WINECRYPT_CERTSTORE *store, context_t *cert,
TRACE
(
"(%p, %p, %p, %p)
\n
"
,
store
,
cert
,
toReplace
,
ppStoreContext
);
context
=
ContextList_Add
(
ms
->
certs
,
cert
,
toReplace
,
store
,
use_link
);
context
=
ContextList_Add
(
ms
->
certs
,
&
ms
->
cs
,
cert
,
toReplace
,
store
,
use_link
);
if
(
!
context
)
return
FALSE
;
...
...
@@ -168,7 +169,7 @@ static context_t *MemStore_enumCert(WINECRYPT_CERTSTORE *store, context_t *prev)
TRACE
(
"(%p, %p)
\n
"
,
store
,
prev
);
ret
=
ContextList_Enum
(
ms
->
certs
,
prev
);
ret
=
ContextList_Enum
(
ms
->
certs
,
&
ms
->
cs
,
prev
);
if
(
!
ret
)
SetLastError
(
CRYPT_E_NOT_FOUND
);
...
...
@@ -180,7 +181,7 @@ static BOOL MemStore_deleteCert(WINECRYPT_CERTSTORE *store, context_t *context)
{
WINE_MEMSTORE
*
ms
=
(
WINE_MEMSTORE
*
)
store
;
if
(
ContextList_Remove
(
ms
->
certs
,
context
))
if
(
ContextList_Remove
(
ms
->
certs
,
&
ms
->
cs
,
context
))
Context_Release
(
context
);
return
TRUE
;
...
...
@@ -194,7 +195,7 @@ static BOOL MemStore_addCRL(WINECRYPT_CERTSTORE *store, context_t *crl,
TRACE
(
"(%p, %p, %p, %p)
\n
"
,
store
,
crl
,
toReplace
,
ppStoreContext
);
context
=
ContextList_Add
(
ms
->
crls
,
crl
,
toReplace
,
store
,
use_link
);
context
=
ContextList_Add
(
ms
->
crls
,
&
ms
->
cs
,
crl
,
toReplace
,
store
,
use_link
);
if
(
!
context
)
return
FALSE
;
...
...
@@ -212,7 +213,7 @@ static context_t *MemStore_enumCRL(WINECRYPT_CERTSTORE *store, context_t *prev)
TRACE
(
"(%p, %p)
\n
"
,
store
,
prev
);
ret
=
ContextList_Enum
(
ms
->
crls
,
prev
);
ret
=
ContextList_Enum
(
ms
->
crls
,
&
ms
->
cs
,
prev
);
if
(
!
ret
)
SetLastError
(
CRYPT_E_NOT_FOUND
);
...
...
@@ -224,7 +225,7 @@ static BOOL MemStore_deleteCRL(WINECRYPT_CERTSTORE *store, context_t *context)
{
WINE_MEMSTORE
*
ms
=
(
WINE_MEMSTORE
*
)
store
;
if
(
!
ContextList_Remove
(
ms
->
crls
,
context
))
if
(
!
ContextList_Remove
(
ms
->
crls
,
&
ms
->
cs
,
context
))
Context_Release
(
context
);
return
TRUE
;
...
...
@@ -238,7 +239,7 @@ static BOOL MemStore_addCTL(WINECRYPT_CERTSTORE *store, context_t *ctl,
TRACE
(
"(%p, %p, %p, %p)
\n
"
,
store
,
ctl
,
toReplace
,
ppStoreContext
);
context
=
ContextList_Add
(
ms
->
ctls
,
ctl
,
toReplace
,
store
,
use_link
);
context
=
ContextList_Add
(
ms
->
ctls
,
&
ms
->
cs
,
ctl
,
toReplace
,
store
,
use_link
);
if
(
!
context
)
return
FALSE
;
...
...
@@ -256,7 +257,7 @@ static context_t *MemStore_enumCTL(WINECRYPT_CERTSTORE *store, context_t *prev)
TRACE
(
"(%p, %p)
\n
"
,
store
,
prev
);
ret
=
ContextList_Enum
(
ms
->
ctls
,
prev
);
ret
=
ContextList_Enum
(
ms
->
ctls
,
&
ms
->
cs
,
prev
);
if
(
!
ret
)
SetLastError
(
CRYPT_E_NOT_FOUND
);
...
...
@@ -268,7 +269,7 @@ static BOOL MemStore_deleteCTL(WINECRYPT_CERTSTORE *store, context_t *context)
{
WINE_MEMSTORE
*
ms
=
(
WINE_MEMSTORE
*
)
store
;
if
(
!
ContextList_Remove
(
ms
->
ctls
,
context
))
if
(
!
ContextList_Remove
(
ms
->
ctls
,
&
ms
->
cs
,
context
))
Context_Release
(
context
);
return
TRUE
;
...
...
@@ -296,6 +297,8 @@ static DWORD MemStore_release(WINECRYPT_CERTSTORE *cert_store, DWORD flags)
ContextList_Free
(
store
->
certs
);
ContextList_Free
(
store
->
crls
);
ContextList_Free
(
store
->
ctls
);
store
->
cs
.
DebugInfo
->
Spare
[
0
]
=
0
;
DeleteCriticalSection
(
&
store
->
cs
);
CRYPT_FreeStore
(
&
store
->
hdr
);
return
ERROR_SUCCESS
;
}
...
...
@@ -345,6 +348,8 @@ static WINECRYPT_CERTSTORE *CRYPT_MemOpenStore(HCRYPTPROV hCryptProv,
{
memset
(
store
,
0
,
sizeof
(
WINE_MEMSTORE
));
CRYPT_InitStore
(
&
store
->
hdr
,
dwFlags
,
StoreTypeMem
,
&
MemStoreVtbl
);
InitializeCriticalSection
(
&
store
->
cs
);
store
->
cs
.
DebugInfo
->
Spare
[
0
]
=
(
DWORD_PTR
)(
__FILE__
": ContextList.cs"
);
store
->
certs
=
ContextList_Create
();
store
->
crls
=
ContextList_Create
();
store
->
ctls
=
ContextList_Create
();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment