[Bug 32515] Steam games protected with Valve's CEG ( Custom Executable Generation) DRM scheme fail game cache validation

wine-bugs at winehq.org wine-bugs at winehq.org
Mon Apr 3 02:53:51 CDT 2017


https://bugs.winehq.org/show_bug.cgi?id=32515

--- Comment #58 from Christian Inci <chris.wine at broke-the-inter.net> ---
Comment on attachment 57700
  --> https://bugs.winehq.org/attachment.cgi?id=57700
HACK to fix the game cache validation issue

diff --git a/server/file.c b/server/file.c
index 85bd9501..8e98e03b 100644
--- a/server/file.c
+++ b/server/file.c
@@ -336,7 +336,7 @@ struct security_descriptor *mode_to_sd( mode_t mode, const
SID *user, const SID
     ACL *dacl;
     SID *sid;
     char *ptr;
-    const SID *world_sid = security_world_sid;
+    const SID *builtin_users_sid = security_builtin_users_sid;
     const SID *local_system_sid = security_local_system_sid;

     dacl_size = sizeof(ACL) + FIELD_OFFSET(ACCESS_ALLOWED_ACE, SidStart) +
@@ -348,7 +348,7 @@ struct security_descriptor *mode_to_sd( mode_t mode, const
SID *user, const SID
         (!(mode & S_IXUSR) && (mode & (S_IXGRP|S_IXOTH))))
         dacl_size += FIELD_OFFSET(ACCESS_DENIED_ACE, SidStart) +
security_sid_len( user );
     if (mode & S_IRWXO)
-        dacl_size += FIELD_OFFSET(ACCESS_ALLOWED_ACE, SidStart) +
security_sid_len( world_sid );
+        dacl_size += FIELD_OFFSET(ACCESS_ALLOWED_ACE, SidStart) +
security_sid_len( builtin_users_sid );

     sd = mem_alloc( sizeof(struct security_descriptor) +
                     security_sid_len( user ) + security_sid_len( group ) +
@@ -430,14 +430,14 @@ struct security_descriptor *mode_to_sd( mode_t mode,
const SID *user, const SID
         current_ace = &aaa->Header;
         aaa->Header.AceType = ACCESS_ALLOWED_ACE_TYPE;
         aaa->Header.AceFlags = (mode & S_IFDIR) ? OBJECT_INHERIT_ACE |
CONTAINER_INHERIT_ACE : 0;
-        aaa->Header.AceSize = FIELD_OFFSET(ACCESS_ALLOWED_ACE, SidStart) +
security_sid_len( world_sid );
+        aaa->Header.AceSize = FIELD_OFFSET(ACCESS_ALLOWED_ACE, SidStart) +
security_sid_len( builtin_users_sid );
         aaa->Mask = 0;
         if (mode & S_IROTH)
             aaa->Mask |= FILE_GENERIC_READ | FILE_GENERIC_EXECUTE;
         if (mode & S_IWOTH)
             aaa->Mask |= FILE_GENERIC_WRITE | DELETE | FILE_DELETE_CHILD;
         sid = (SID *)&aaa->SidStart;
-        memcpy( sid, world_sid, security_sid_len( world_sid ));
+        memcpy( sid, builtin_users_sid, security_sid_len( builtin_users_sid
));
     }

     return sd;
@@ -511,7 +511,7 @@ mode_t sd_to_mode( const struct security_descriptor *sd,
const SID *owner )
                     ad_ace = (const ACCESS_DENIED_ACE *)ace;
                     sid = (const SID *)&ad_ace->SidStart;
                     mode = file_access_to_mode( ad_ace->Mask );
-                    if (security_equal_sid( sid, security_world_sid ))
+                    if (security_equal_sid( sid, security_builtin_users_sid ))
                     {
                         bits_to_set &= ~((mode << 6) | (mode << 3) | mode); /*
all */
                     }
@@ -529,7 +529,7 @@ mode_t sd_to_mode( const struct security_descriptor *sd,
const SID *owner )
                     aa_ace = (const ACCESS_ALLOWED_ACE *)ace;
                     sid = (const SID *)&aa_ace->SidStart;
                     mode = file_access_to_mode( aa_ace->Mask );
-                    if (security_equal_sid( sid, security_world_sid ))
+                    if (security_equal_sid( sid, security_builtin_users_sid ))
                     {
                         mode = (mode << 6) | (mode << 3) | mode;  /* all */
                         new_mode |= mode & bits_to_set;

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.



More information about the wine-bugs mailing list