aboutsummaryrefslogtreecommitdiffstats
path: root/lib
Commit message (Collapse)AuthorAgeLines
* Fix a double free when calling proxy_disconnect() inside phb->func()dequis2016-02-18-8/+23
| | | | | | | | | | | | | | | | Fixes trac ticket #1248 proxy_connected() calls phb->func(), then tries to do phb_free() directly afterwards, but that might have been freed by a proxy_disconnect() call during the execution of that callback. This one happened to several different people because some AIM server broke recently. This commit fixes it by implementing a phb_connected() function that removes the PHB from the hash table before calling phb->func(), which ensures that any proxy_disconnect() calls just close the fd and nothing else.
* ini: Null check file parameter before passing it to open()dequis2015-12-17-2/+2
| | | | | The test suite does this. It's harmless in practice but open() is declared as nonnull. Thanks to clang's ubsan.
* proxy: fix validation of the proxytype valuedequis2015-12-09-1/+1
| | | | | | Coverity says it could be an out of bounds read, but the value is set internally, so not really. Still, good point about the condition being wrong.
* misc.c: Add a str_reject_chars function, use it in otr_filter_colorsdequis2015-11-27-0/+17
|
* Use proxy_disconnect() in http, ssl, jabber, oscardequis2015-10-26-6/+8
| | | | | | | | | | Twitter and MSN are all HTTP/SSL, so they don't need it either. The out of tree facebook and steam plugins are also covered by the HTTP/SSL changes. Yahoo is written in a weird way and doesn't seem to need it (it seems it doesn't immediately stop connections when you tell it to logout)
* Add proxy_disconnect() to interrupt possibly pending connectionsdequis2015-10-26-1/+40
| | | | | | | | | | | Fixes trac ticket 1198, https://bugs.bitlbee.org/bitlbee/ticket/1198 This function can be used as a safe drop-in replacement to closesocket() If a proxy connection is pending (connected callback still not called), it looks up the PHB in a hash table indexed by fd. If it is there, it closes, frees the phb and avoids further calls to the callback. If it is not in there, it just does closesocket()
* proxy: Turn phb_close() into phb_free(), use it for all g_free(phb)dequis2015-10-26-35/+40
| | | | More cleanup.
* proxy: Use an array of function pointers for proxy_connect_*dequis2015-10-25-10/+15
| | | | Just cleanup.
* socks4a proxy support (like socks4 with remote DNS)dequis2015-10-21-7/+26
| | | | | | | | | Fixes trac ticket 995 https://bugs.bitlbee.org/bitlbee/ticket/995 This is slightly pointless for the suggested use case (tor), since with socks5 we already send a hostname instead of an IP address. Either way, it was easy to implement, so I hope it helps.
* Allow NULL callback functions in http_dorequestArtem Savkov2015-10-08-3/+7
| | | | | | | | | Check callback function supplied to http_dorequest and only run it if it is not NULL. While it is not the usual case there are some times when there is no need to check the results of a http request. Using a NULL pointer is much more convenient than creating noop functions.
* Replace <br/> and <br /> with \n in strip_htmlAndré Glüpker2015-10-08-0/+4
|
* typofix - https://github.com/vlajos/misspell_fixerVeres Lajos2015-08-07-1/+1
|
* Fix NULL pointer dereference in lib/json.c. (#1220)Wilmer van der Gaast2015-06-17-1/+1
|
* Move twitter_parse_id() to parse_int64() in misc.cdequis2015-05-30-0/+17
|
* More coverity fixes!dequis2015-05-07-2/+8
| | | | | | | | | | CID 18634: 'Logically dead code' in jabber_get_info CID 18638: 'Dereference after null check' in oauth2_access_token_done CID 18691: 'Copy into fixed size buffer' in bee_irc_user_new CID 20274: Leak in bee_irc_chat_invite CID 20297, CID 20283: Leaks in crypt_main Some the base64 leaks there weren't detected, needs modeling.
* events_glib: fix parameter type warnings in event_debug() callsdequis2015-05-05-4/+4
|
* oauth: fix use-after-free of the ->next of the listdequis2015-04-24-2/+3
| | | | | | | Third time's the charm. Previous attempt fixed something and broke something else. Whatever. Definitely valgrind clean this time.
* get_rfc822_header: allow headers at the end of a stringdequis2015-04-10-5/+0
|
* proxy: minor refactor, simplify error handlingdequis2015-04-05-110/+36
|
* Fix a bunch of memory leaksdequis2015-03-22-8/+4
| | | | | | | | | | | | | | | | | | | - irc_im.c: - bee_irc_user_msg: strdup leaks when otr swallows messages - bee_irc_user_action_response: GString leak in all ctcp replies - otr.c: - call g_slist_free() on the list of the otr_policy setting - otr_filter_msg_in: call otrl_tlv_free() if "tlvs" are returned - otr_filter_msg_out: don't g_strdup() if the message should be ignored - log_otr_message: g_strdup_vprintf() leaks always - nogaim.c: - imcb_ask_auth/imcb_ask_add: leaks in g_strdup_printf() - imcb_ask_add leaks imcb_ask_cb_data if the user already exists - add imcb_ask_cb_free() to correctly free its data - msn_util.c: add msn_buddy_ask_free(), ditto - storage_xml.c: pass_cr/password if base64_decode or arc_decode fail - ssl_gnutls.c: conn->hostname leak in error conditions, like invalid certs - jabber_util.c: jabber_buddy_by_ext_jid() leaks jid if it's not an ext jid
* Refactor oauth_params_del to fix use-after-free that i introduceddequis2015-02-28-8/+7
| | | | | | | Yeah ok that was dumb. This is essentially just using a 'data' variable instead of 'l->data', but i went ahead and cleaned up the function.
* coverity: Fix some (harmless?) use-after-free with g_slist_remove()dequis2015-02-22-1/+1
| | | | | | | These were passing a pointer to a variable right after it was g_free()'d They are most likely harmless as g_slist_remove() probably just needs the pointer location, but fixing it anyway.
* Reindent everything to K&R style with tabsIndent2015-02-20-3705/+3716
| | | | | | | Used uncrustify, with the configuration file in ./doc/uncrustify.cfg Commit author set to "Indent <please@skip.me>" so that it's easier to skip while doing git blame.
* Use glib's GChecksum for md5/sha1dequis2015-01-31-733/+58
| | | | | | | | | | | | | | | | | | | This changes behavior slightly: - md5_init()/sha1_init() allocate a GChecksum - md5_finish()/sha1_finish() close and free() it - md5_digest_keep() was added (no sha1 equivalent needed) And yes, glib has this concept of "closing" the GChecksum, which means it can't be used anymore after g_checksum_get_digest(). jabber_cache_add() actually seems to need to do that to generate some random-ish values, so i kept that working by adding a md5_digest_keep() function that copies the GChecksum before it gets closed GChecksum was introduced in glib 2.16, so the configure script version was bumped. We were already depending on glib 2.16 accidentally (some post-3.2.2 code uses GHashTableIter)
* random_bytes: Use /dev/urandom only, don't bother trying /dev/randomdequis2015-01-26-59/+10
| | | | | | Also abort() if there's no /dev/urandom See http://www.2uo.de/myths-about-urandom/ for details.
* Fix UTF8 nick truncation issuesdequis2015-01-16-0/+10
| | | | | | | | | | | | | | When nicks exceeded the length limit, they were cut at 24 bytes and that sometimes left invalid utf8 at the end, which made the nick_ok() validation fail and often broke those nicks completely. This adds a truncate_utf8 function to cut the string at a safe place Also, the method to deduplicate nicks when there's no more place to add underscores was changed to add "_XX" at the end, where XX are two random hex chars. The previous method in those cases was increasing the value of the first character of the nick... which leads to silly and confusing results (i.e. FacebookUser -> GacebookUser)
* http proxy: only check for "HTTP/1.x 200" in the status stringdequis2015-01-16-2/+2
| | | | | It was checking for "Connection established" and some proxies use a different string, such as "Tunnel established" in polipo
* Fix some more g_source_remove warnings, this time in proxy.cdequis2015-01-16-0/+2
| | | | Both in gaim_io_connected(), visible when using an http proxy
* Fix compiler warnings on Cygwin and Mac OS X.Jason Copenhaver2015-01-16-5/+5
| | | | | | | | * Don't use PIE/PIC on Cygwin/Darwin unless specified as these platforms don't support it. * Cleanup warnings for 'make check' build. * Fix the type issue for getsockopt calls. * Fix enum warnings in Yahoo libs on Mac OS X.
* Replace isdigit/isalpha/.../tolower/toupper with glib variantsdequis2015-01-16-14/+14
| | | | | | | | | | | This fixes warnings about passing signed chars to them (apparently they are implemented as macros that do array lookups without checks in some platforms, yay) Specifically: functions=isalnum|isalpha|isdigit|isspace|isxdigit|tolower|toupper sed -ir "s/$functions/g_ascii_&/g" **/*.c
* Fix incorrect Free Software Foundation addressMatej Cepl2015-01-16-31/+31
|
* Use glib functions for base64 decoding/encodingdequis2014-11-24-111/+9
| | | | | | | | | | | | This fixes several coverity warnings about 'tainted data index sink' and a fixme about thread safety in the old base64_decode implementation. Had to adapt the code that used base64_encode_real: - oauth.c: different character set order, but it's for the nonce so it doesn't matter - libyahoo2.c: used as part of the auth, changes "+/=" into "._-". Fixed by encoding first the usual way through glib, then replacing.
* dcc: Fix some invalid memory accesses reported by ASANdequis2014-10-27-1/+1
| | | | ASAN <3
* Some more g_source_remove warning fixesdequis2014-10-27-0/+3
| | | | | - http_incoming_data calling itself - jabber_bs_free_transfer calling jabber_si_free_transfer
* Bunch of merges from dx.Wilmer van der Gaast2014-10-17-0/+17
|\
| * Add support for XEP-0203: Delayed delivery (message timestamps)dequis2014-10-10-0/+16
| | | | | | | | | | | | | | | | Very similar to XEP-0091 which is already supported, but was marked as obsolete, replaced by XEP-0203. The main differences are the tag name and the timestamp format. Due to the similarities, both XEPs are still supported.
* | Debian bug #764181: Accidentally had an LGPL header in a bunch of files.Wilmer van der Gaast2014-10-17-60/+60
|/ | | | | | Replaced them with GPL headers where possible. OSCAR and Twitter modules can't be relicenced though, so add an LGPL blurb to debian/copyright.
* RIP native win32 support (use cygwin instead)dequis2014-09-27-298/+0
| | | | It has been broken for a very long time and nobody cared about it.
* Prevent some "Source ID ## was not found..." warningsdequis2014-09-27-0/+6
| | | | | | | These appear in glib 2.40, and, well, are pretty much useless. But people complain about them anyway. Probably fixes trac ticket 1151, at least partially.
* ssl_gnutls: Fix some uninitialized memory warningsdequis2014-09-27-2/+2
|
* srv_lookup: Portability fixes, handle compressed responsesjcopenha2014-07-24-18/+309
| | | | | | | | | | srv_lookup works on cygwin and openbsd now. Provide ns_initparse, friends, and types where they aren't provided by platform. Use dn_expandname instead of custom parser so compressed DNS responses are handled correctly.
* Add limit param to split_command_parts(), fix twitter quotes bugdequis2014-07-24-3/+8
| | | | Only took me a few months to write. I even added a test case.
* Merging compiler warning fix. Patch by Mark H Weaver <mhw@netris.org>.Wilmer van der Gaast2014-03-07-1/+1
|
* Unicode parsing fix in JSON parser: JSON can contain UTF-16 surrogate pairsWilmer van der Gaast2014-03-02-11/+41
| | | | | | | (used to encode >16-bit chars). Added code to parse those *and* the ability to encode >16-bit Unicode in UTF-8. Also sending this upstream. This should fix #1121.
* Update json-parser code to git rev 11a80f389769d1f66ca7fbe64ad89c82d3ba4ba9.Wilmer van der Gaast2014-02-13-103/+391
| | | | | | Few BitlBee-specific diffs now. Annoyingly need to link to libm now for the use of the function pow() since the lib now does its own number parsing...
* Fix "Unusuable" typo.Wilmer van der Gaast2014-02-08-1/+1
|
* Merging HTTP/1.1 branch. This implements HTTP/1.1 support in http_client.Wilmer van der Gaast2013-06-16-73/+190
|\ | | | | | | | | | | | | Little benefit as I'm not burning my fingers on keepalive connecitons for now, but eventually the Twitter streaming API is going to drop 1.0 support: https://dev.twitter.com/blog/deprecating-http-1.0-streaming-api
| * Use HTTP/1.1 by default in the Twitter module, and stick to the initiallyWilmer van der Gaast2013-06-16-3/+15
| | | | | | | | | | used protocol version when internally handling redirects.
| * Add better handling of HTTP/1.1 and/or keepalive connections. This shouldWilmer van der Gaast2013-06-09-71/+171
|/ | | | | | let me close #641, and more importantly, prepares the Twitter module for an upcoming API change. https://dev.twitter.com/blog/deprecating-http-1.0-streaming-api
* Fix double free() in ssl_nss.c. #1038Wilmer van der Gaast2013-05-25-2/+2
|