comparison mcabber/mcabber/xmpp.c @ 2197:189abf03ef24

Fix fingerprint management (Reported by Sven Gaerner in issue #134)
author Mikael Berthe <mikael@lilotux.net>
date Sun, 11 Oct 2015 17:17:35 +0200
parents 40ddaebeb81e
children 1591518a33b9
comparison
equal deleted inserted replaced
2196:8811fe9d6ef0 2197:189abf03ef24
712 case LM_SSL_STATUS_CERT_HOSTNAME_MISMATCH: 712 case LM_SSL_STATUS_CERT_HOSTNAME_MISMATCH:
713 scr_LogPrint(LPRINT_LOGNORM, 713 scr_LogPrint(LPRINT_LOGNORM,
714 "Certificate hostname does not match expected hostname!"); 714 "Certificate hostname does not match expected hostname!");
715 break; 715 break;
716 case LM_SSL_STATUS_CERT_FINGERPRINT_MISMATCH: { 716 case LM_SSL_STATUS_CERT_FINGERPRINT_MISMATCH: {
717 char fpr[49]; 717 char fpr[49] = {0};
718 fingerprint_to_hex((const unsigned char*)lm_ssl_get_fingerprint(ssl), 718 fingerprint_to_hex((const unsigned char*)lm_ssl_get_fingerprint(ssl),
719 fpr); 719 fpr);
720 scr_LogPrint(LPRINT_LOGNORM, 720 scr_LogPrint(LPRINT_LOGNORM,
721 "Certificate fingerprint does not match expected fingerprint!"); 721 "Certificate fingerprint does not match expected fingerprint!");
722 scr_LogPrint(LPRINT_LOGNORM, "Remote fingerprint: %s", fpr); 722 scr_LogPrint(LPRINT_LOGNORM, "Remote fingerprint: %s", fpr);
723 723
724 scr_LogPrint(LPRINT_LOGNORM, "Expected fingerprint: %s", 724 scr_LogPrint(LPRINT_LOGNORM, "Expected fingerprint: %s",
725 settings_opt_get("ssl_fingerprint")); 725 settings_opt_get("ssl_fingerprint"));
726 726
727 return LM_SSL_RESPONSE_STOP; 727 return LM_SSL_RESPONSE_STOP;
728 }
728 break; 729 break;
729 }
730 case LM_SSL_STATUS_GENERIC_ERROR: 730 case LM_SSL_STATUS_GENERIC_ERROR:
731 scr_LogPrint(LPRINT_LOGNORM, "Generic SSL error!"); 731 scr_LogPrint(LPRINT_LOGNORM, "Generic SSL error!");
732 break; 732 break;
733 default: 733 default:
734 scr_LogPrint(LPRINT_LOGNORM, "SSL error:%d", status); 734 scr_LogPrint(LPRINT_LOGNORM, "SSL error:%d", status);
1730 // (no JID, no password, etc.) 1730 // (no JID, no password, etc.)
1731 gint xmpp_connect(void) 1731 gint xmpp_connect(void)
1732 { 1732 {
1733 const char *userjid, *password, *resource, *servername, *ssl_fpr; 1733 const char *userjid, *password, *resource, *servername, *ssl_fpr;
1734 char *dynresource = NULL; 1734 char *dynresource = NULL;
1735 char fpr[16]; 1735 char fpr[17] = {0};
1736 const char *proxy_host; 1736 const char *proxy_host;
1737 const char *resource_prefix = PACKAGE_NAME; 1737 const char *resource_prefix = PACKAGE_NAME;
1738 char *fjid; 1738 char *fjid;
1739 int ssl, tls; 1739 int ssl, tls;
1740 LmSSL *lssl; 1740 LmSSL *lssl;
1741 unsigned int port; 1741 unsigned int port;
1742 unsigned int ping; 1742 unsigned int ping = 40;
1743 LmMessageHandler *handler; 1743 LmMessageHandler *handler;
1744 GError *error = NULL; 1744 GError *error = NULL;
1745 1745
1746 xmpp_disconnect(); 1746 xmpp_disconnect();
1747 1747
1763 1763
1764 lconnection = lm_connection_new_with_context(NULL, main_context); 1764 lconnection = lm_connection_new_with_context(NULL, main_context);
1765 1765
1766 g_log_set_handler("LM", LM_LOG_LEVEL_ALL, lm_debug_handler, NULL); 1766 g_log_set_handler("LM", LM_LOG_LEVEL_ALL, lm_debug_handler, NULL);
1767 1767
1768 ping = 40;
1769 if (settings_opt_get("pinginterval")) 1768 if (settings_opt_get("pinginterval"))
1770 ping = (unsigned int) settings_opt_get_int("pinginterval"); 1769 ping = (unsigned int) settings_opt_get_int("pinginterval");
1771 lm_connection_set_keep_alive_rate(lconnection, ping); 1770 lm_connection_set_keep_alive_rate(lconnection, ping);
1772 scr_LogPrint(LPRINT_DEBUG, "Ping interval established: %d secs", ping); 1771 scr_LogPrint(LPRINT_DEBUG, "Ping interval established: %d secs", ping);
1773 1772