[ 
https://issues.apache.org/jira/browse/TRAFODION-2203?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15526853#comment-15526853
 ] 

ASF GitHub Bot commented on TRAFODION-2203:
-------------------------------------------

Github user DaveBirdsall commented on a diff in the pull request:

    https://github.com/apache/incubator-trafodion/pull/729#discussion_r80747563
  
    --- Diff: core/sql/sqlcomp/PrivMgrPrivileges.cpp ---
    @@ -3182,34 +3042,107 @@ PrivStatus 
PrivMgrPrivileges::revokeColumnPrivileges(
     
        // Create list of ColumnReferences
        objectUsage.columnReferences = new std::vector<ColumnReference *>;
    -   for (size_t i = 0; i < colPrivsToRevoke.size(); i++)
    +   for (size_t i = 0; i < colPrivsToRevoke.entries(); i++)
        {
    -      ColPrivEntry &colPrivToRevoke = colPrivsToRevoke[i];
    -      ColPrivEntry *grantedColPriv = findColumnEntry(grantedColPrivs, 
colPrivToRevoke.getColumnOrdinal());
    +      PrivMgrCoreDesc &colPrivToRevoke = colPrivsToRevoke[i];
    +      PrivMgrCoreDesc *grantedColPriv = findColumnEntry(grantedColPrivs, 
colPrivToRevoke.getColumnOrdinal());
           if (grantedColPriv)
           {
    -         ColumnReference *adjustedCol = new ColumnReference;
    -         adjustedCol->columnOrdinal = colPrivToRevoke.getColumnOrdinal();
    -         adjustedCol->originalPrivs = grantedColPriv->getPrivDesc();     
    -         PrivMgrCoreDesc adjustedPrivs = grantedColPriv->getPrivDesc();
    -         adjustedPrivs.AndNot(colPrivToRevoke.getPrivDesc());
    -         adjustedCol->updatedPrivs = adjustedPrivs;
    -         objectUsage.columnReferences->push_back(adjustedCol);
    -      }
    -   }
    +        if (colPrivToRevoke.anyNotSet(*grantedColPriv))
    +        {
    +          // sanity check -> verify that privileges to revoke actually are 
set
    +          // in the granted list 
    +          for (size_t p = FIRST_DML_COL_PRIV; p <= LAST_DML_COL_PRIV; p++ )
    +          {
    +            PrivType type = (PrivType)p;
    +
    +            // If trying to revoke a privilege that is not granted or 
    +            // if trying to revoke grant option that is not granted, 
report it
    +            //if ((colPrivToRevoke.getPriv(type) && 
!grantedColPriv->getPriv(type)) ||
    +            //    (!colPrivToRevoke.getPriv(type) && 
colPrivToRevoke.getWgo(type) && !grantedColPriv->getWgo(type)))
    +            bool printWarning = false;
    +            bool printWgo = false;
    +            if (colPrivToRevoke.getPriv(type))
    +            {
    +              if ( !grantedColPriv->getPriv(type))
    +                printWarning = true;
    +            }
    +            else
    +            {
    +              if (colPrivToRevoke.getWgo(type) && 
!grantedColPriv->getWgo(type))
    +              {
    +                printWarning = true;
    +                printWgo = true;
    --- End diff --
    
    I didn't see printWgo used anywhere. It's only a problem though if there is 
some logic you intended but forgot.


>  a user can grant privileges that he doesn’t have to other users/roles 
> successfully
> -----------------------------------------------------------------------------------
>
>                 Key: TRAFODION-2203
>                 URL: https://issues.apache.org/jira/browse/TRAFODION-2203
>             Project: Apache Trafodion
>          Issue Type: Bug
>          Components: sql-security
>         Environment: Centos6.7
> EsgynDB R2.2 0825daily
>            Reporter: Gao, Rui-Xian
>            Assignee: Roberta Marton
>
> a  user can grant privileges that he doesn’t have to other users/roles 
> successfully.
> To reproduce --
> root user --
> create role role1;
> create schema mysch;
> set schema mysch;
> create table tab1(a int, b int)no partition;
> grant insert on tab1 to testuser1 with grant option;
> connect as testuser1 --
> set schema mysch;
> SQL>grant select on tab1 to role1;
> *** ERROR[1012] No privileges were granted.  You lack grant option on the 
> specified privileges. [2016-09-01 15:31:33] //Rachel: this is expected
> SQL>grant insert ,select on tab1 to role1;
> --- SQL operation complete.   // should return error, testuser1 doesn’t have 
> select privilege on tab1



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to