From f2b81d88ba57b9a76ca1b8976435c92db296761f Mon Sep 17 00:00:00 2001 From: Moxie Marlinspike Date: Fri, 25 Mar 2016 17:08:43 -0700 Subject: [PATCH] Check file uri sharing owner rather than prohibiting outright Fixes #5381 // FREEBIE --- jni/Android.mk | 10 ++++- ..._thoughtcrime_securesms_util_FileUtils.cpp | 31 +++++++++++++++ ...rg_thoughtcrime_securesms_util_FileUtils.h | 21 ++++++++++ libs/armeabi-v7a/libnative-utils.so | Bin 0 -> 13436 bytes libs/armeabi/libnative-utils.so | Bin 0 -> 13432 bytes libs/x86/libnative-utils.so | Bin 0 -> 5204 bytes .../thoughtcrime/securesms/ShareActivity.java | 36 ++++++++++++++++-- .../securesms/util/FileUtils.java | 13 +++++++ 8 files changed, 106 insertions(+), 5 deletions(-) create mode 100644 jni/utils/org_thoughtcrime_securesms_util_FileUtils.cpp create mode 100644 jni/utils/org_thoughtcrime_securesms_util_FileUtils.h create mode 100755 libs/armeabi-v7a/libnative-utils.so create mode 100755 libs/armeabi/libnative-utils.so create mode 100755 libs/x86/libnative-utils.so create mode 100644 src/org/thoughtcrime/securesms/util/FileUtils.java diff --git a/jni/Android.mk b/jni/Android.mk index 2882b8f5ce..3d4190875c 100644 --- a/jni/Android.mk +++ b/jni/Android.mk @@ -53,6 +53,14 @@ libwebrtc_spl \ libwebrtc_vad \ libcrypto_static - include $(BUILD_SHARED_LIBRARY) +include $(CLEAR_VARS) + +LOCAL_MODULE := native-utils +LOCAL_C_INCLUDES := $(JNI_DIR)/utils/ +LOCAL_CFLAGS += -Wall + +LOCAL_SRC_FILES := $(JNI_DIR)/utils/org_thoughtcrime_securesms_util_FileUtils.cpp + +include $(BUILD_SHARED_LIBRARY) \ No newline at end of file diff --git a/jni/utils/org_thoughtcrime_securesms_util_FileUtils.cpp b/jni/utils/org_thoughtcrime_securesms_util_FileUtils.cpp new file mode 100644 index 0000000000..ef86ac8e35 --- /dev/null +++ b/jni/utils/org_thoughtcrime_securesms_util_FileUtils.cpp @@ -0,0 +1,31 @@ +#include "org_thoughtcrime_securesms_util_FileUtils.h" + +#include +#include +#include + +jint JNICALL Java_org_thoughtcrime_securesms_util_FileUtils_getFileDescriptorOwner + (JNIEnv *env, jclass clazz, jobject fileDescriptor) +{ + jclass fdClass = env->GetObjectClass(fileDescriptor); + + if (fdClass == NULL) { + return -1; + } + + jfieldID fdFieldId = env->GetFieldID(fdClass, "descriptor", "I"); + + if (fdFieldId == NULL) { + return -1; + } + + int fd = env->GetIntField(fileDescriptor, fdFieldId); + + struct stat stat_struct; + + if (fstat(fd, &stat_struct) != 0) { + return -1; + } + + return stat_struct.st_uid; +} \ No newline at end of file diff --git a/jni/utils/org_thoughtcrime_securesms_util_FileUtils.h b/jni/utils/org_thoughtcrime_securesms_util_FileUtils.h new file mode 100644 index 0000000000..abf13b35bc --- /dev/null +++ b/jni/utils/org_thoughtcrime_securesms_util_FileUtils.h @@ -0,0 +1,21 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class org_thoughtcrime_securesms_util_FileUtils */ + +#ifndef _Included_org_thoughtcrime_securesms_util_FileUtils +#define _Included_org_thoughtcrime_securesms_util_FileUtils +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: org_thoughtcrime_securesms_util_FileUtils + * Method: getFileDescriptorOwner + * Signature: (Ljava/io/FileDescriptor;)I + */ +JNIEXPORT jint JNICALL Java_org_thoughtcrime_securesms_util_FileUtils_getFileDescriptorOwner + (JNIEnv *, jclass, jobject); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libs/armeabi-v7a/libnative-utils.so b/libs/armeabi-v7a/libnative-utils.so new file mode 100755 index 0000000000000000000000000000000000000000..1fa3ef17b5b48d19bca5d18e0fb7650ee025b823 GIT binary patch literal 13436 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 literal 0 HcmV?d00001 diff --git a/libs/armeabi/libnative-utils.so b/libs/armeabi/libnative-utils.so new file mode 100755 index 0000000000000000000000000000000000000000..e8f6ea4496b9dd6333e50d9f9e8fe6f52235f13e GIT binary patch literal 13432 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 literal 0 HcmV?d00001 diff --git a/libs/x86/libnative-utils.so b/libs/x86/libnative-utils.so new file mode 100755 index 0000000000000000000000000000000000000000..a4b0567b873925a89f84928129e1c264d8e10c66 GIT binary patch literal 5204 zcmeHLU2GIp6u#Roc9l|ATq6qTXjW20Cap9@lo%`BVu8?=TBCxQOn0W;E&GEr(^5zg z$%3I-mTV#>JQ!mFPlg8)5`#WylLbYe2=T!fA9x|z#+Pb{X%tz%Z)WbYtvs0cWU?oF z=KOu<+%tFXZ0?;Sv7LQ^KtM=p7R^FhU2wKO=ta7OB3eYdcvwWleQ+@*`37`y&}W$s z)1~$nA;?Q;g@s#xu1$!!$32cBfy}y$H$mJ+{5Im`dDvveIY#`ZWBd$5@=o~3a{Sj2 zhxre3>%+Sn@%r(@7@I8XFHS_LMk}D9#TwCGQ?rDit%Bc2GYaHWn6)9uPhofZ_F>5D zu%Gem^N_b;e*w7y_}?HUu^#U|qIjOL__bPHWG_X7^>LwTiAh}>NoDnP>X7N1x?@hJ z92mBvC-!NH_lhRHq#jx9y1fp*0gThvH0`aSkAQUvAj_*heZqydwI)UrYdeFLB@y*)Uh?g$5>l3<`vqm*1nHwKXIteS4 zF*Vyvj9aFiv9)n0mDc)FX>$mQt&MWvwApLg0Pc5k*1&5kbVtV>4%;^G z(xNMCh;(Y$c8tXO^{Sntk@021mqyxGvbvL+FgI{an=Vi@xD|Xqcq#Y+@M7Zn;F={C zkI`L6AxJEFcg=I1(+(@1T(MmDD8uoN=G*sw~D&O`-IkcD# zMk^m66Nr_2%Eiy=D}K%EVC5xTkCwmk^5-i#4;I=}E)|`%h~s7v|72l()O({=ujEr< zb+kM*eUohzVxfX4#HR|eR`e2ti59BYzgrkDO=6Y`u?Qfog;?0_dT~N&LB&$Z&A2xd z$id>d=oA{OByl-ft~|#2MEfmN_QF3MJDERxQjE7;f>HhDKrw&$CcJ2(nE%GpLWS7L zx~x7otCT-ns%7;QVkNKP`tk!V@N_YD#>+myW*W4rCDW45R^h4ssImGUOS^-y!+973BX2$$AZH%s^uX8Z*$CfyN9p zX5jxh195kM>-En4`mHCty}JVa5wHU%_fkCek`35AgN4Blfw`CXqgu^zzt8hx1bZx= z3mE75_6OKJBlJUZCgh9CbxEBsQP!nV9=0j`JvZ9@}Z|yI6~3 zkhsI<7=NM<*7`5>8T$JY{5|+5FwZDr+t#fwDDB&J4XsnU)NbXuj!yhKx|R0*mT8%3 zQ@71^fUzf@izopWqq(%9bgG>lu!U+TZO3x-VWAoav-ZJ^CmlKQ( zs5qeFYUSKhoN6Yu5lhdQqNZs{1KBv%rZnBM^n*f$>PQ{6^h_!t)X^NO;G()ky<#{K z3N?|-WXvpr*_>mlquFtw(#D1f)3Q^!ESvs!#OF=s8sPIM&-gZv4m)NZeb{mxIxk_e}{e6z@-x#F=pLT_cX~)jSLtBUZNXE_BWbaqc%L;P?%O{gRl& z`iH>GA&&nex7b7-$=XNYTa4p7E=l4}z#(yb55t&P86#Her=W9uj?3>p5%~aMlO*m# o=&aX4Cy2PUp6Xs1BYzC$w+cyHfV)?JvNwr)6S#}gfMlHXH