mirror of git://git.sysmocom.de/ofono
Add simple utility to validate paths
This commit is contained in:
parent
8e62522575
commit
03a0fde2f4
44
src/dbus.c
44
src/dbus.c
|
@ -320,6 +320,50 @@ void __ofono_dbus_pending_reply(DBusMessage **msg, DBusMessage *reply)
|
|||
*msg = NULL;
|
||||
}
|
||||
|
||||
gboolean __ofono_dbus_valid_object_path(const char *path)
|
||||
{
|
||||
unsigned int i;
|
||||
char c = '\0';
|
||||
|
||||
if (path == NULL)
|
||||
return FALSE;
|
||||
|
||||
if (path[0] == '\0')
|
||||
return FALSE;
|
||||
|
||||
if (path[0] && !path[1] && path[0] == '/')
|
||||
return TRUE;
|
||||
|
||||
if (path[0] != '/')
|
||||
return FALSE;
|
||||
|
||||
for (i = 0; path[i]; i++) {
|
||||
if (path[i] == '/' && c == '/')
|
||||
return FALSE;
|
||||
|
||||
c = path[i];
|
||||
|
||||
if (path[i] >= 'a' && path[i] <= 'z')
|
||||
continue;
|
||||
|
||||
if (path[i] >= 'A' && path[i] <= 'Z')
|
||||
continue;
|
||||
|
||||
if (path[i] >= '0' && path[i] <= '9')
|
||||
continue;
|
||||
|
||||
if (path[i] == '_' || path[i] == '/')
|
||||
continue;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (path[i-1] == '/')
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
DBusConnection *ofono_dbus_get_connection()
|
||||
{
|
||||
return g_connection;
|
||||
|
|
|
@ -53,6 +53,8 @@ DBusMessage *__ofono_error_sim_not_ready(DBusMessage *msg);
|
|||
|
||||
void __ofono_dbus_pending_reply(DBusMessage **msg, DBusMessage *reply);
|
||||
|
||||
gboolean __ofono_dbus_valid_object_path(const char *path);
|
||||
|
||||
#include <ofono/types.h>
|
||||
|
||||
#include <ofono/plugin.h>
|
||||
|
|
Loading…
Reference in New Issue