mirror of
git://jb55.com/damus
synced 2024-09-29 00:10:43 +00:00
lmdb: patch semaphore names to use shared group container prefix
mdb_env_setup_locks: using semnames 'group.com.damus/MDBrwDDi_FHxD' (29), 'group.com.damus/MDBwwDDi_FHxD' (29) From old Apple docs: > IPC and POSIX Semaphores and Shared Memory > > Normally, sandboxed apps cannot use Mach IPC, POSIX semaphores and > shared memory, or UNIX domain sockets (usefully). However, by specifying > an entitlement that requests membership in an application group, an app > can use these technologies to communicate with other members of that > application group. > > Note: System V semaphores are not supported in sandboxed apps. > > UNIX domain sockets are straightforward; they work just like any other > file. > > Any semaphore or Mach port that you wish to access within a sandboxed > app must be named according to a special convention: > > POSIX semaphores and shared memory names must begin with the application > group identifier, followed by a slash (/), followed by a name of your > choosing. > > Mach port names must begin with the application group identifier, > followed by a period (.), followed by a name of your choosing. > > For example, if your application group’s name is > Z123456789.com.example.app-group, you might create two semaphores named > Z123456789.myappgroup/rdyllwflg and Z123456789.myappgroup/bluwhtflg. You > might create a Mach port named > Z123456789.com.example.app-group.Port_of_Kobe. > > Note: The maximum length of a POSIX semaphore name is only 31 bytes, so > if you need to use POSIX semaphores, you should keep your app group > names short. Link: https://github.com/damus-io/damus/issues/2323#issuecomment-2323305949 Signed-off-by: William Casarin <jb55@jb55.com>
This commit is contained in:
parent
3a9dda5eb3
commit
dcafcd9184
@ -3981,6 +3981,8 @@
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"MDB_SHORT_SEMNAMES=1",
|
||||
"MDB_SEM_NAME_PREFIX=\"group.com.damus\"",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
@ -4044,7 +4046,10 @@
|
||||
ENABLE_USER_SCRIPT_SANDBOXING = NO;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
"GCC_PREPROCESSOR_DEFINITIONS[arch=*]" = "";
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"MDB_SHORT_SEMNAMES=1",
|
||||
"MDB_SEM_NAME_PREFIX=\"group.com.damus\"",
|
||||
);
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
|
@ -4893,8 +4893,17 @@ mdb_env_setup_locks(MDB_env *env, MDB_name *fname, int mode, int *excl)
|
||||
#ifdef MDB_SHORT_SEMNAMES
|
||||
encbuf[9] = '\0'; /* drop name from 15 chars to 14 chars */
|
||||
#endif
|
||||
sprintf(env->me_txns->mti_rmname, "/MDBr%s", encbuf);
|
||||
sprintf(env->me_txns->mti_wmname, "/MDBw%s", encbuf);
|
||||
|
||||
#define DEF_STR(x) #x
|
||||
#define DEF_TO_STRING(x) DEF_STR(x)
|
||||
sprintf(env->me_txns->mti_rmname, DEF_TO_STRING(MDB_SEM_NAME_PREFIX) "/MDBr%s", encbuf);
|
||||
sprintf(env->me_txns->mti_wmname, DEF_TO_STRING(MDB_SEM_NAME_PREFIX) "/MDBw%s", encbuf);
|
||||
#undef DEF_STR
|
||||
#undef DEF_TO_STRING
|
||||
|
||||
printf("mdb_env_setup_locks: using semnames '%s' (%d), '%s' (%d)\n",
|
||||
env->me_txns->mti_rmname, strlen(env->me_txns->mti_rmname),
|
||||
env->me_txns->mti_wmname, strlen(env->me_txns->mti_wmname));
|
||||
/* Clean up after a previous run, if needed: Try to
|
||||
* remove both semaphores before doing anything else.
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user