summaryrefslogtreecommitdiffstats
path: root/common/userpref.c
AgeCommit message (Collapse)AuthorFilesLines
2021-07-29common: Return proper error codes from userpref_read_pair_recordGravatar Nikias Bassen1-14/+19
2021-07-27Add support for MbedTLSGravatar Nikias Bassen1-39/+277
2019-06-22Make sure to not use deprecated API when compiling with OpenSSL >= 1.1Gravatar Rosen Penev1-6/+12
There are several missing headers as well as deprecated functions for which compatibility was added as needed.
2018-10-01tools: Remove length check on device UDID arguments to support newer devicesGravatar Nikias Bassen1-29/+24
The 40 characters length check on the device UDID made newer devices unusable with the libimobiledevice tools and was actually redundant since an invalid UDID will always fail to resolve. This commit removes the length check alltogether (but makes sure it is not an empty string "").
2018-09-29lockdown: Pass along usbmux device id when saving pair recordsGravatar Nikias Bassen1-2/+3
2018-04-27userpref: [GnuTLS] Use valid serial for >= 3.6.0Gravatar Bastien Nocera1-3/+3
Another change in 3.6.0 is that a serial of '\0' is not valid anymore. Bump it to one.
2018-04-27userpref: [GnuTLS] Fix 3.6.0 SHA1 compatibilityGravatar Bastien Nocera1-3/+3
Verification will fail if a special flag is not passed. Use gnutls_x509_crt_sign2() instead of gnutls_x509_crt_sign() to make sure that passing this flag works in 3.6.0 and stays working with 3.6.1.
2016-11-04userpref: [GnuTLS] Fix pairing record generation and improve error handlingGravatar Nikias Bassen1-40/+45
In newer GnuTLS versions the parameters supplied to gnutls_x509_privkey_import_rsa_raw() are actually checked for somewhat sane values. Since we were passing the same values for all parameters, this check fails and the device certificate is never generated. However due to missing checks the pairing record was saved anyway, with an empty device certificate. This led to TLS errors during communication, leading to the "GnuTLS: Error in pull function" error message appearing and the communication to fail. This commit fixes the issue by passing some sane values, and also improves the overall error handling during generation of the paring record.
2016-07-27userpref: Remove obsoleted function userpref_has_pair_record()Gravatar Jay Freeman (saurik)1-29/+0
Since pair records are meanwhile handled by usbmuxd there is no need to check for the existence of a pair record on disk. Asking usbmuxd for a pair record of a given UDID is sufficient to know if it exists or not.
2015-01-28Remove trailing whitespace errors from all filesGravatar Martin Szulecki1-3/+3
2014-08-06userpref: Fix wrong documentation about return values of ↵Gravatar Nikias Bassen1-7/+10
userpref_read_system_buid() Also, add a debug message that will print the actual error code.
2014-03-22Update copyright in various filesGravatar Martin Szulecki1-1/+1
2014-03-21implement global thread safe library initializationGravatar Nikias Bassen1-4/+0
2014-03-21userpref: Try to output similar error messages in GnuTLS and OpenSSL logicGravatar Martin Szulecki1-1/+5
2014-03-21userpref: fix GnuTLS key generationGravatar Nikias Bassen1-7/+3
2014-03-21userpref: merge pair_record_generate_from_device_public_key() into ↵Gravatar Nikias Bassen1-249/+138
pair_record_generate_keys_and_certs()
2014-03-21userpref: fix mixed up root/host certificate storageGravatar Nikias Bassen1-2/+2
2014-03-21userpref: Remove obsolete dict item check as plist_dict_set_item() takes careGravatar Martin Szulecki1-5/+0
2014-03-21userpref: Fix invalid plist_free() which caused pair process to failGravatar Martin Szulecki1-3/+6
2014-03-21userpref: Use correct import helper for keys and certsGravatar Martin Szulecki1-9/+9
2014-03-21Refactor pair record handling to use new usbmuxd pair record interfaceGravatar Martin Szulecki1-569/+420
This refactoring is mandatory as libimobiledevice should not interact with the pair record configuration directory which is owned by the usbmuxd user. This change also adds compatibility for the native usbmuxd and thus pair records saved by iTunes.
2014-03-20Bump dependency to libplist 1.11 and remove use of "plist_dict_insert_item()"Gravatar Martin Szulecki1-2/+2
2013-12-04userpref.c: removed excessive plist_free of a plist dict item.Gravatar Aaron Burghardt1-1/+0
2013-11-06userpref: Fix memory leak in userpref_device_record_get_certs_as_pem()Gravatar Martin Szulecki1-0/+7
2013-11-06userpref: fix incorrect use of BIO_get_mem_data() when generating keys ↵Gravatar Nikias Bassen1-4/+29
(closing #32)
2013-10-25userpref: Use RSA_generate_key_ex() in favor of deprecated RSA_generate_key()Gravatar Martin Szulecki1-2/+10
The RSA_generate_key function has been deprecated in OpenSSL in favour of the newer function RSA_generate_key_ex. RSA_generate_key_ex with its current interface has been part of OpenSSL starting from version 0.9.8 (July 2005).
2013-10-09Remove duplicate newline from debug messages as one is added automaticallyGravatar Martin Szulecki1-1/+1
2013-10-09userpref: Free string in internal_set_value() to fix a memory leakGravatar Martin Szulecki1-0/+2
2013-10-08userpref: Free some plist return values to fix a few memory leaksGravatar Martin Szulecki1-0/+15
2013-09-27userpref: rename 'index' parameter to silece compiler warning on the PiGravatar Nikias Bassen1-2/+2
2013-09-24userpref: return error if remove in userpref_remove_device_record failsGravatar Nikias Bassen1-3/+7
2013-09-21userpref: Use /var/lib/lockdown as the system-wide pair record path on LinuxGravatar Martin Szulecki1-4/+1
2013-09-19userpref: Use system wide pair record path and add config directory getterGravatar Martin Szulecki1-73/+3
2013-09-19userpref: fix leak and possible endless recursion in mkdir_with_parentsGravatar Nikias Bassen1-7/+4
2013-09-17userpref: Add missing argument docs for device_record_get_certs_as_pem()Gravatar Martin Szulecki1-0/+1
2013-09-17Make sure to re-use the DeviceCertificate instead of generating a new one ↵Gravatar Nikias Bassen1-1/+14
every time This prevented iTunes from using a pairing made by libimobiledevice giving an error that the device sent invalid data.
2013-09-17Fix broken build of GnuTLS and silence two compiler warningsGravatar Martin Szulecki1-2/+2
2013-09-17userpref: Add copyright referenceGravatar Martin Szulecki1-0/+1
2013-09-17Refactor userpref logic to use plist format and implement trust dialog handlingGravatar Martin Szulecki1-351/+333
iOS 7 introduced a new pairing workflow which increases security by showing a trust dialog to the user before pairing with the host is allowed. The userpref system was refactored to use the native plist format, too. Configuration files of the native implementations are used on each platform. Former configuration files are no longer in use and can be deleted.
2013-07-15userpref: correctly NULL-terminate arguments in string_concat callsGravatar Nikias Bassen1-2/+2
2013-07-13common: Fix WIN32 portability for recent userpref security fixGravatar Martin Szulecki1-1/+6
2013-07-02Bug #331 - Don't create a /tmp/root directory insecurelyGravatar Federico Mena Quintero1-29/+76
When finding the user's home directory to generate a subdirectory in $HOME/.config, we would fall back to /tmp if there were no environment variables for HOME or XDG_CONFIG_HOME. Since libimobiledevice gets used by upower, and since upowerd runs as root, this would cause a /tmp/root directory to be created insecurely, leaving upowerd vulnerable to a symlink attack. Now we fall back to getpwuid_r() to find the user's home directory if it is not provided in environment variables - this is the case when upowerd gets run via systemd, for example. The result is that we'll end up creating /root/.config, a safe directory, since regular users cannot create symlinks in /root. In the future we'll need a way for libimobiledevice to find where to store its pairing data on behalf of the console user, rather than writing it to /root. http://libiphone.lighthouseapp.com/projects/27916-libiphone/tickets/331-insecure-tmp-directory-use
2013-05-23Silence compiler warnings for win32 buildsGravatar Martin Szulecki1-0/+2
2013-04-25common: Move debug and userpref code into libinternalcommonGravatar Martin Szulecki1-0/+1161