Browse Source

Make sure attributes propagate through security wrappers

Both SSecurityVeNCrypt and SSecurityStack are wrappers around other
security objects, so they need to delegate the properties of those
sub-objects properly.
tags/v1.4.90
Pierre Ossman 9 years ago
parent
commit
555815a4e3

+ 17
- 0
common/rfb/SSecurityStack.cxx View File

@@ -65,3 +65,20 @@ const char* SSecurityStack::getUserName() const

return c;
}

SConnection::AccessRights SSecurityStack::getAccessRights() const
{
SConnection::AccessRights accessRights;

if (!state0 && !state1)
return SSecurity::getAccessRights();

accessRights = SConnection::AccessFull;

if (state0)
accessRights &= state0->getAccessRights();
if (state1)
accessRights &= state1->getAccessRights();

return accessRights;
}

+ 1
- 0
common/rfb/SSecurityStack.h View File

@@ -31,6 +31,7 @@ namespace rfb {
virtual bool processMsg(SConnection* cc);
virtual int getType() const { return type; };
virtual const char* getUserName() const;
virtual SConnection::AccessRights getAccessRights() const;
protected:
short state;
SSecurity* state0;

+ 13
- 0
common/rfb/SSecurityVeNCrypt.cxx View File

@@ -171,3 +171,16 @@ bool SSecurityVeNCrypt::processMsg(SConnection* sc)
return ssecurity->processMsg(sc);
}

const char* SSecurityVeNCrypt::getUserName() const
{
if (ssecurity == NULL)
return NULL;
return ssecurity->getUserName();
}

SConnection::AccessRights SSecurityVeNCrypt::getAccessRights() const
{
if (ssecurity == NULL)
return SSecurity::getAccessRights();
return ssecurity->getAccessRights();
}

+ 3
- 2
common/rfb/SSecurityVeNCrypt.h View File

@@ -39,8 +39,9 @@ namespace rfb {
SSecurityVeNCrypt(SecurityServer *sec);
~SSecurityVeNCrypt();
virtual bool processMsg(SConnection* sc);// { return true; }
virtual int getType() const { return secTypeVeNCrypt; }
virtual const char* getUserName() const { return NULL; }
virtual int getType() const { return chosenType; }
virtual const char* getUserName() const;
virtual SConnection::AccessRights getAccessRights() const;

protected:
SSecurity *ssecurity;

Loading…
Cancel
Save