summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAkash Aggarwal <quic_akasagga@quicinc.com>2022-06-27 16:57:36 +0530
committerAkash Aggarwal <quic_akasagga@quicinc.com>2022-08-19 21:10:54 +0530
commit811cb3bd6a1e9cdef1a471ff5e01a0b6b8d09721 (patch)
tree268da77fca024bd1ef1076031ce1cbdac0bb19e5 /src
parent82f879b57c5750c10d0db9328466f5bc76d67518 (diff)
downloadlibqmi-811cb3bd6a1e9cdef1a471ff5e01a0b6b8d09721.tar.gz
libqmi-glib: allow hiding personal info while logging
During qmi logging, some of the information like simIccId, username, password need to be hidden from displaying in the logs to protect some of the user information.
Diffstat (limited to 'src')
-rw-r--r--src/libqmi-glib/qmi-device.c19
-rw-r--r--src/libqmi-glib/qmi-message.c7
-rw-r--r--src/libqmi-glib/qmi-utils.c14
-rw-r--r--src/libqmi-glib/qmi-utils.h23
-rw-r--r--src/qmicli/qmicli.c26
5 files changed, 81 insertions, 8 deletions
diff --git a/src/libqmi-glib/qmi-device.c b/src/libqmi-glib/qmi-device.c
index 9689f103..69a9b448 100644
--- a/src/libqmi-glib/qmi-device.c
+++ b/src/libqmi-glib/qmi-device.c
@@ -19,6 +19,7 @@
*
* Copyright (C) 2012 Lanedo GmbH
* Copyright (C) 2012-2021 Aleksander Morgado <aleksander@aleksander.es>
+ * Copyright (c) 2022 Qualcomm Innovation Center, Inc.
*/
#include <config.h>
@@ -73,6 +74,10 @@
# include "qmi-net-port-manager-rmnet.h"
#endif
+/* maximum number of printed data bytes when personal info
+ * should be hidden */
+#define MAX_PRINTED_BYTES 12
+
static void async_initable_iface_init (GAsyncInitableIface *iface);
G_DEFINE_TYPE_EXTENDED (QmiDevice, qmi_device, G_TYPE_OBJECT, 0,
@@ -1682,9 +1687,17 @@ trace_message (QmiDevice *self,
action_str = "received";
}
- printable = qmi_helpers_str_hex (((GByteArray *)message)->data,
- ((GByteArray *)message)->len,
- ':');
+ if (qmi_utils_get_show_personal_info () || (((GByteArray *)message)->len < MAX_PRINTED_BYTES)) {
+ printable = qmi_helpers_str_hex (((GByteArray *)message)->data,
+ ((GByteArray *)message)->len,
+ ':');
+ } else {
+ g_autofree gchar *tmp = NULL;
+
+ tmp = qmi_helpers_str_hex (((GByteArray *)message)->data, MAX_PRINTED_BYTES, ':');
+ printable = g_strdup_printf ("%s...", tmp);
+ }
+
g_debug ("[%s] %s message...\n"
"%sRAW:\n"
"%s length = %u\n"
diff --git a/src/libqmi-glib/qmi-message.c b/src/libqmi-glib/qmi-message.c
index d92a14bc..d2df0876 100644
--- a/src/libqmi-glib/qmi-message.c
+++ b/src/libqmi-glib/qmi-message.c
@@ -25,6 +25,7 @@
* Boston, MA 02110-1301 USA.
*
* Copyright (C) 2012-2019 Aleksander Morgado <aleksander@aleksander.es>
+ * Copyright (c) 2022 Qualcomm Innovation Center, Inc.
*/
#include <glib.h>
@@ -1546,7 +1547,11 @@ qmi_message_get_tlv_printable (QmiMessage *self,
g_return_val_if_fail (line_prefix != NULL, NULL);
g_return_val_if_fail (raw != NULL, NULL);
- value_hex = qmi_helpers_str_hex (raw, raw_length, ':');
+ if (qmi_utils_get_show_personal_info ())
+ value_hex = qmi_helpers_str_hex (raw, raw_length, ':');
+ else
+ value_hex = g_strdup ("###...");
+
printable = g_strdup_printf ("%sTLV:\n"
"%s type = 0x%02x\n"
"%s length = %" G_GSIZE_FORMAT "\n"
diff --git a/src/libqmi-glib/qmi-utils.c b/src/libqmi-glib/qmi-utils.c
index 8b504668..ff81b733 100644
--- a/src/libqmi-glib/qmi-utils.c
+++ b/src/libqmi-glib/qmi-utils.c
@@ -20,6 +20,7 @@
*
* Copyright (C) 2012-2020 Dan Williams <dcbw@redhat.com>
* Copyright (C) 2012-2020 Aleksander Morgado <aleksander@aleksander.es>
+ * Copyright (c) 2022 Qualcomm Innovation Center, Inc.
*/
#include <config.h>
@@ -28,6 +29,7 @@
/*****************************************************************************/
static volatile gint __traces_enabled = FALSE;
+static volatile gint __hide_personal_info = FALSE;
gboolean
qmi_utils_get_traces_enabled (void)
@@ -40,3 +42,15 @@ qmi_utils_set_traces_enabled (gboolean enabled)
{
g_atomic_int_set (&__traces_enabled, enabled);
}
+
+void
+qmi_utils_set_show_personal_info (gboolean hide_personal_info)
+{
+ g_atomic_int_set (&__hide_personal_info, hide_personal_info);
+}
+
+gboolean
+qmi_utils_get_show_personal_info (void)
+{
+ return (gboolean) g_atomic_int_get (&__hide_personal_info);
+} \ No newline at end of file
diff --git a/src/libqmi-glib/qmi-utils.h b/src/libqmi-glib/qmi-utils.h
index 2982a6a3..97a6174c 100644
--- a/src/libqmi-glib/qmi-utils.h
+++ b/src/libqmi-glib/qmi-utils.h
@@ -23,7 +23,7 @@
* Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
* Copyright (C) 2000 Wim Taymans <wtay@chello.be>
* Copyright (C) 2002 Thomas Vander Stichele <thomas@apestaart.org>
-
+ * Copyright (c) 2022 Qualcomm Innovation Center, Inc.
*/
#ifndef _LIBQMI_GLIB_QMI_UTILS_H_
@@ -69,6 +69,27 @@ gboolean qmi_utils_get_traces_enabled (void);
*/
void qmi_utils_set_traces_enabled (gboolean enabled);
+/**
+ * qmi_utils_set_show_personal_info:
+ * @show_personal_info: %TRUE to show personal info in traces, %FALSE otherwise.
+ *
+ * Sets whether personal info is printed when traces are enabled.
+ *
+ * Since: 1.32
+ */
+void qmi_utils_set_show_personal_info (gboolean show_personal_info);
+
+/**
+ * qmi_utils_get_show_personal_info:
+ *
+ * Checks whether personal info should be hidden when traces are enabled.
+ *
+ * Returns: %TRUE to show personal info in trace, %FALSE otherwise.
+ *
+ * Since: 1.32
+ */
+gboolean qmi_utils_get_show_personal_info (void);
+
G_END_DECLS
#endif /* _LIBQMI_GLIB_QMI_UTILS_H_ */
diff --git a/src/qmicli/qmicli.c b/src/qmicli/qmicli.c
index 76d0565e..76411865 100644
--- a/src/qmicli/qmicli.c
+++ b/src/qmicli/qmicli.c
@@ -16,6 +16,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* Copyright (C) 2012-2017 Aleksander Morgado <aleksander@aleksander.es>
+ * Copyright (c) 2022 Qualcomm Innovation Center, Inc.
*/
#include "config.h"
@@ -68,6 +69,7 @@ static gboolean device_open_auto_flag;
static gchar *client_cid_str;
static gboolean client_no_release_cid_flag;
static gboolean verbose_flag;
+static gboolean verbose_full_flag;
static gboolean silent_flag;
static gboolean version_flag;
@@ -129,6 +131,10 @@ static GOptionEntry main_entries[] = {
"Run action with verbose logs, including the debug ones",
NULL
},
+ { "verbose-full", 0, 0, G_OPTION_ARG_NONE, &verbose_full_flag,
+ "Run action with verbose logs, including the debug ones and personal info",
+ NULL
+ },
{ "silent", 0, 0, G_OPTION_ARG_NONE, &silent_flag,
"Run action with no logs; not even the error/warning ones",
NULL
@@ -210,7 +216,7 @@ log_handler (const gchar *log_domain,
g_assert_not_reached ();
}
- if (!verbose_flag && !err)
+ if (!verbose_flag && !verbose_full_flag && !err)
return;
g_fprintf (err ? stderr : stdout,
@@ -1018,14 +1024,28 @@ int main (int argc, char **argv)
g_log_set_handler (NULL, G_LOG_LEVEL_MASK, log_handler, NULL);
g_log_set_handler ("Qmi", G_LOG_LEVEL_MASK, log_handler, NULL);
- if (verbose_flag)
+
+ if (verbose_flag && verbose_full_flag) {
+ g_printerr ("error: cannot specify --verbose and --verbose-full at the same time\n");
+ exit (EXIT_FAILURE);
+ } else if (verbose_flag) {
qmi_utils_set_traces_enabled (TRUE);
+ qmi_utils_set_show_personal_info (FALSE);
+ } else if (verbose_full_flag) {
+ qmi_utils_set_traces_enabled (TRUE);
+ qmi_utils_set_show_personal_info (TRUE);
+ }
#if QMI_MBIM_QMUX_SUPPORTED
/* libmbim logging */
g_log_set_handler ("Mbim", G_LOG_LEVEL_MASK, log_handler, NULL);
- if (verbose_flag)
+ if (verbose_flag) {
mbim_utils_set_traces_enabled (TRUE);
+ mbim_utils_set_show_personal_info (FALSE);
+ } else if (verbose_full_flag) {
+ mbim_utils_set_traces_enabled (TRUE);
+ mbim_utils_set_show_personal_info (TRUE);
+ }
#endif
#if QMI_QRTR_SUPPORTED