diff options
-rw-r--r-- | .github/workflows/build.yml | 34 | ||||
-rw-r--r-- | 3rd_party/libsrp6a-sha512/t_math.c | 6 | ||||
-rw-r--r-- | Makefile.am | 1 | ||||
-rw-r--r-- | common/userpref.c | 1 | ||||
-rw-r--r-- | configure.ac | 4 | ||||
-rw-r--r-- | cython/imobiledevice.pxd | 3 | ||||
-rw-r--r-- | cython/imobiledevice.pyx | 2 | ||||
-rw-r--r-- | cython/installation_proxy.pxi | 2 | ||||
-rw-r--r-- | cython/lockdown.pxi | 15 | ||||
-rw-r--r-- | cython/notification_proxy.pxi | 2 | ||||
-rw-r--r-- | tools/idevicedevmodectl.c | 1 |
11 files changed, 44 insertions, 27 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d054366..584f2e9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,26 +12,26 @@ jobs: - name: install dependencies run: | sudo apt-get update - sudo apt-get install cython3 + pip install cython - name: prepare environment run: | echo "target_triplet=`gcc -dumpmachine`" >> $GITHUB_ENV - name: fetch libplist - uses: dawidd6/action-download-artifact@v2 + uses: dawidd6/action-download-artifact@v3 with: github_token: ${{secrets.GITHUB_TOKEN}} workflow: build.yml name: libplist-latest_${{env.target_triplet}} repo: libimobiledevice/libplist - name: fetch libusbmuxd - uses: dawidd6/action-download-artifact@v2 + uses: dawidd6/action-download-artifact@v3 with: github_token: ${{secrets.GITHUB_TOKEN}} workflow: build.yml name: libusbmuxd-latest_${{env.target_triplet}} repo: libimobiledevice/libusbmuxd - name: fetch libimobiledevice-glue - uses: dawidd6/action-download-artifact@v2 + uses: dawidd6/action-download-artifact@v3 with: github_token: ${{secrets.GITHUB_TOKEN}} workflow: build.yml @@ -45,7 +45,7 @@ jobs: done sudo cp -r extract/* / sudo ldconfig - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: fetch-depth: 0 - name: autogen @@ -60,7 +60,7 @@ jobs: DESTDIR=`pwd`/dest make install tar -C dest -cf libimobiledevice.tar usr - name: publish artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: libimobiledevice-latest_${{env.target_triplet}} path: libimobiledevice.tar @@ -74,24 +74,24 @@ jobs: else brew install libtool autoconf automake pkgconfig fi - pip3 install cython==0.29.24 + pip3 install cython shell: bash - name: fetch libplist - uses: dawidd6/action-download-artifact@v2 + uses: dawidd6/action-download-artifact@v3 with: github_token: ${{secrets.GITHUB_TOKEN}} workflow: build.yml name: libplist-latest_macOS repo: libimobiledevice/libplist - name: fetch libusbmuxd - uses: dawidd6/action-download-artifact@v2 + uses: dawidd6/action-download-artifact@v3 with: github_token: ${{secrets.GITHUB_TOKEN}} workflow: build.yml name: libusbmuxd-latest_macOS repo: libimobiledevice/libusbmuxd - name: fetch libimobiledevice-glue - uses: dawidd6/action-download-artifact@v2 + uses: dawidd6/action-download-artifact@v3 with: github_token: ${{secrets.GITHUB_TOKEN}} workflow: build.yml @@ -104,7 +104,7 @@ jobs: tar -C extract -xvf $I done sudo cp -r extract/* / - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: install additional requirements run: | mkdir -p lib @@ -156,7 +156,7 @@ jobs: DESTDIR=`pwd`/dest make install tar -C dest -cf libimobiledevice.tar usr - name: publish artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: libimobiledevice-latest_macOS path: libimobiledevice.tar @@ -193,21 +193,21 @@ jobs: echo "target_triplet=`gcc -dumpmachine`" >> $GITHUB_ENV git config --global core.autocrlf false - name: fetch libplist - uses: dawidd6/action-download-artifact@v2 + uses: dawidd6/action-download-artifact@v3 with: github_token: ${{secrets.GITHUB_TOKEN}} workflow: build.yml name: libplist-latest_${{ matrix.arch }}-${{ env.dest }} repo: libimobiledevice/libplist - name: fetch libusbmuxd - uses: dawidd6/action-download-artifact@v2 + uses: dawidd6/action-download-artifact@v3 with: github_token: ${{secrets.GITHUB_TOKEN}} workflow: build.yml name: libusbmuxd-latest_${{ matrix.arch }}-${{ env.dest }} repo: libimobiledevice/libusbmuxd - name: fetch libimobiledevice-glue - uses: dawidd6/action-download-artifact@v2 + uses: dawidd6/action-download-artifact@v3 with: github_token: ${{secrets.GITHUB_TOKEN}} workflow: build.yml @@ -220,7 +220,7 @@ jobs: tar -C extract -xvf $I done cp -r extract/* / - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: autogen run: ./autogen.sh CC=gcc CXX=g++ --enable-debug - name: make @@ -233,7 +233,7 @@ jobs: DESTDIR=`pwd`/dest make install tar -C dest -cf libimobiledevice.tar ${{ env.dest }} - name: publish artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: libimobiledevice-latest_${{ matrix.arch }}-${{ env.dest }} path: libimobiledevice.tar diff --git a/3rd_party/libsrp6a-sha512/t_math.c b/3rd_party/libsrp6a-sha512/t_math.c index 037650e..dac19ec 100644 --- a/3rd_party/libsrp6a-sha512/t_math.c +++ b/3rd_party/libsrp6a-sha512/t_math.c @@ -720,7 +720,11 @@ BigIntegerModExp(BigInteger r, BigInteger b, BigInteger e, BigInteger m, BigInte else if(a == NULL) { BN_mod_exp(r, b, e, m, c); } -#if OPENSSL_VERSION_NUMBER >= 0x00906000 +/* + * In LibreSSL BN_mod_exp_mont_word() is not a public symbol where BN_mod_exp() + * and BN_mod_exp_mont() will use the word optimization when appropriate. + */ +#if OPENSSL_VERSION_NUMBER >= 0x00906000 && !defined(LIBRESSL_VERSION_NUMBER) else if(B > 0 && B < ULONG_MAX) { /* 0.9.6 and above has mont_word optimization */ BN_mod_exp_mont_word(r, B, e, m, c, a); } diff --git a/Makefile.am b/Makefile.am index b11de57..352b28f 100644 --- a/Makefile.am +++ b/Makefile.am @@ -8,6 +8,7 @@ EXTRA_DIST = \ git-version-gen dist-hook: + @if ! git diff --quiet; then echo "Uncommitted changes present; not releasing"; exit 1; fi echo $(VERSION) > $(distdir)/.tarball-version docs/html: $(top_builddir)/doxygen.cfg $(top_srcdir)/src/*.c $(top_srcdir)/src/*.h $(top_srcdir)/include/libimobiledevice/*.h diff --git a/common/userpref.c b/common/userpref.c index b64c703..48bcfcb 100644 --- a/common/userpref.c +++ b/common/userpref.c @@ -627,7 +627,6 @@ userpref_error_t pair_record_generate_keys_and_certs(plist_t pair_record, key_da } } - X509V3_EXT_cleanup(); X509_free(dev_cert); EVP_PKEY_free(pubkey); diff --git a/configure.ac b/configure.ac index 3c12010..9856ae2 100644 --- a/configure.ac +++ b/configure.ac @@ -132,9 +132,9 @@ AC_ARG_WITH([cython], [build_cython=false], [build_cython=true]) if test "$build_cython" = "true"; then - AC_PROG_CYTHON([0.17.0]) + AC_PROG_CYTHON([3.0.0]) if [test "x$CYTHON" != "xfalse"]; then - AM_PATH_PYTHON([2.3], [ + AM_PATH_PYTHON([3.0], [ CYTHON_PYTHON AS_COMPILER_FLAG([-Wno-cast-function-type -Werror], [ CYTHON_CFLAGS+=" -Wno-cast-function-type" diff --git a/cython/imobiledevice.pxd b/cython/imobiledevice.pxd index b44e444..238df68 100644 --- a/cython/imobiledevice.pxd +++ b/cython/imobiledevice.pxd @@ -1,3 +1,6 @@ +#!python +#cython: language_level=3str + cimport plist from libc.stdint cimport * diff --git a/cython/imobiledevice.pyx b/cython/imobiledevice.pyx index 2a125aa..8da2296 100644 --- a/cython/imobiledevice.pyx +++ b/cython/imobiledevice.pyx @@ -94,7 +94,7 @@ cdef class iDeviceEvent: def __get__(self): return self._c_event.conn_type -cdef void idevice_event_cb(const_idevice_event_t c_event, void *user_data) with gil: +cdef void idevice_event_cb(const_idevice_event_t c_event, void *user_data) noexcept: cdef iDeviceEvent event = iDeviceEvent.__new__(iDeviceEvent) event._c_event = c_event (<object>user_data)(event) diff --git a/cython/installation_proxy.pxi b/cython/installation_proxy.pxi index bf2c1da..1d3e323 100644 --- a/cython/installation_proxy.pxi +++ b/cython/installation_proxy.pxi @@ -27,7 +27,7 @@ cdef extern from "libimobiledevice/installation_proxy.h": instproxy_error_t instproxy_restore(instproxy_client_t client, char *appid, plist.plist_t client_options, instproxy_status_cb_t status_cb, void *user_data) instproxy_error_t instproxy_remove_archive(instproxy_client_t client, char *appid, plist.plist_t client_options, instproxy_status_cb_t status_cb, void *user_data) -cdef void instproxy_notify_cb(plist.plist_t command, plist.plist_t status, void *py_callback) with gil: +cdef void instproxy_notify_cb(plist.plist_t command, plist.plist_t status, void *py_callback) noexcept: (<object>py_callback)(plist.plist_t_to_node(command, False), plist.plist_t_to_node(status, False)) cdef class InstallationProxyError(BaseError): diff --git a/cython/lockdown.pxi b/cython/lockdown.pxi index 6b88f9d..25edb4c 100644 --- a/cython/lockdown.pxi +++ b/cython/lockdown.pxi @@ -210,14 +210,23 @@ cdef class LockdownClient(PropertyListService): raise cpdef set_value(self, bytes domain, bytes key, object value): - cdef plist.plist_t c_node = plist.native_to_plist_t(value) + cdef: + plist.plist_t c_node = NULL + char* c_domain = NULL + char* c_key = NULL + + c_node = plist.native_to_plist_t(value) + if domain is not None: + c_domain = domain + if key is not None: + c_key = key try: - self.handle_error(lockdownd_set_value(self._c_client, domain, key, c_node)) + self.handle_error(lockdownd_set_value(self._c_client, c_domain, c_key, c_node)) except BaseError, e: raise finally: if c_node != NULL: - plist.plist_free(c_node) + c_node = NULL cpdef remove_value(self, bytes domain, bytes key): self.handle_error(lockdownd_remove_value(self._c_client, domain, key)) diff --git a/cython/notification_proxy.pxi b/cython/notification_proxy.pxi index 4ffbf07..261200e 100644 --- a/cython/notification_proxy.pxi +++ b/cython/notification_proxy.pxi @@ -70,7 +70,7 @@ NP_ITDBPREP_DID_END = C_NP_ITDBPREP_DID_END NP_LANGUAGE_CHANGED = C_NP_LANGUAGE_CHANGED NP_ADDRESS_BOOK_PREF_CHANGED = C_NP_ADDRESS_BOOK_PREF_CHANGED -cdef void np_notify_cb(const_char_ptr notification, void *py_callback): +cdef void np_notify_cb(const_char_ptr notification, void *py_callback) noexcept: (<object>py_callback)(notification) cdef class NotificationProxyError(BaseError): diff --git a/tools/idevicedevmodectl.c b/tools/idevicedevmodectl.c index 9997cf3..bd1de6a 100644 --- a/tools/idevicedevmodectl.c +++ b/tools/idevicedevmodectl.c @@ -389,6 +389,7 @@ int main(int argc, char *argv[]) if ((op == OP_ENABLE || op == OP_ARM) && dev_mode_status) { if (dev_mode_status) { + idevice_free(device); printf("DeveloperMode is already enabled.\n"); return 0; } |