summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Christian <andrew.christian@nokia.com>2012-02-16 06:32:38 -0500
committerAlexei Rousskikh <ext-alexei.rousskikh@nokia.com>2012-02-16 15:22:30 +0100
commit52adfd8d4a70372f59b03e3da5750cda1f561fc1 (patch)
tree00969237f99e48b56c110271d477462506259e00
parent883d1eb8b4c2203e06cba92e7368defd83241c31 (diff)
Changed uid_t to int to work better with QML
Change-Id: I77a38355ad1d12f9f7ff5a8a9e2ae9cab3efc722 Reviewed-by: Alexei Rousskikh <ext-alexei.rousskikh@nokia.com>
-rw-r--r--src/jsonuidrangeauthority.cpp23
-rw-r--r--src/jsonuidrangeauthority.h16
2 files changed, 21 insertions, 18 deletions
diff --git a/src/jsonuidrangeauthority.cpp b/src/jsonuidrangeauthority.cpp
index 14fbfa9..0530b2c 100644
--- a/src/jsonuidrangeauthority.cpp
+++ b/src/jsonuidrangeauthority.cpp
@@ -59,13 +59,16 @@ QT_BEGIN_NAMESPACE_JSONSTREAM
The JsonUIDRangeAuthority class authorizes Json client connections based on the user ID of the
client. This user ID is read directly from the connected socket. The authorized range
- is set with a minimum and maximum value. Initially these values are set to minimum=1 and
- maximum=0. The range is inclusive; that is, to be authorized the client
- must satisfy "minimum <= uid <= maximum".
+ is set with a minimum and maximum value. The range is inclusive; that is, to be authorized the client
+ must satisfy "minimum <= uid <= maximum". Initially the range is not set; you must set both
+ minimum and maximum, or all clients will be refused.
The name returned by the JsonUIDRangeAuthority class is the name entry in the /etc/passwd
database. If a name entry does not exist, the JsonUIDRangeAuthority class sets the name equal
to the string form of the uid.
+
+ Please note that actual Posix uid_t values are unsigned integers. In theory this means that
+ we will get into trouble if someone has a UID value greater than about 2000000000.
*/
/*!
@@ -74,8 +77,8 @@ QT_BEGIN_NAMESPACE_JSONSTREAM
JsonUIDRangeAuthority::JsonUIDRangeAuthority(QObject *parent)
: JsonAuthority(parent)
- , m_minimum(1)
- , m_maximum(0)
+ , m_minimum(-1)
+ , m_maximum(-1)
{
}
@@ -83,7 +86,7 @@ JsonUIDRangeAuthority::JsonUIDRangeAuthority(QObject *parent)
Return the minimum value
*/
-uid_t JsonUIDRangeAuthority::minimum() const
+int JsonUIDRangeAuthority::minimum() const
{
return m_minimum;
}
@@ -92,7 +95,7 @@ uid_t JsonUIDRangeAuthority::minimum() const
Set the minimum value to \a minimum.
*/
-void JsonUIDRangeAuthority::setMinimum(uid_t minimum)
+void JsonUIDRangeAuthority::setMinimum(int minimum)
{
if (m_minimum != minimum) {
m_minimum = minimum;
@@ -104,7 +107,7 @@ void JsonUIDRangeAuthority::setMinimum(uid_t minimum)
Return the maximum value
*/
-uid_t JsonUIDRangeAuthority::maximum() const
+int JsonUIDRangeAuthority::maximum() const
{
return m_maximum;
}
@@ -113,7 +116,7 @@ uid_t JsonUIDRangeAuthority::maximum() const
Set the maximum value to \a maximum.
*/
-void JsonUIDRangeAuthority::setMaximum(uid_t maximum)
+void JsonUIDRangeAuthority::setMaximum(int maximum)
{
if (m_maximum != maximum) {
m_maximum = maximum;
@@ -163,7 +166,7 @@ AuthorizationRecord JsonUIDRangeAuthority::clientConnected(JsonStream *stream)
euid = cr.uid;
#endif
- if (euid >= m_minimum && euid <= m_maximum) {
+ if (m_minimum >= 0 && m_maximum >= 0 && euid >= (uid_t) m_minimum && euid <= (uid_t) m_maximum) {
struct passwd *passwd = getpwuid(euid);
if (passwd)
authRecord.identifier = QString::fromLatin1(passwd->pw_name);
diff --git a/src/jsonuidrangeauthority.h b/src/jsonuidrangeauthority.h
index 2622c2a..8bd139a 100644
--- a/src/jsonuidrangeauthority.h
+++ b/src/jsonuidrangeauthority.h
@@ -53,17 +53,17 @@ QT_BEGIN_NAMESPACE_JSONSTREAM
class Q_ADDON_JSONSTREAM_EXPORT JsonUIDRangeAuthority : public JsonAuthority
{
Q_OBJECT
- Q_PROPERTY(uid_t minimum READ minimum WRITE setMinimum NOTIFY minimumChanged)
- Q_PROPERTY(uid_t maximum READ maximum WRITE setMaximum NOTIFY maximumChanged)
+ Q_PROPERTY(int minimum READ minimum WRITE setMinimum NOTIFY minimumChanged)
+ Q_PROPERTY(int maximum READ maximum WRITE setMaximum NOTIFY maximumChanged)
public:
JsonUIDRangeAuthority(QObject *parent = 0);
- uid_t minimum() const;
- void setMinimum(uid_t);
+ int minimum() const;
+ void setMinimum(int);
- uid_t maximum() const;
- void setMaximum(uid_t);
+ int maximum() const;
+ void setMaximum(int);
virtual AuthorizationRecord clientConnected(JsonStream *stream);
virtual AuthorizationRecord messageReceived(JsonStream *stream, const QJsonObject &message);
@@ -73,8 +73,8 @@ signals:
void maximumChanged();
private:
- uid_t m_minimum;
- uid_t m_maximum;
+ int m_minimum;
+ int m_maximum;
};
QT_END_NAMESPACE_JSONSTREAM