Changeset 2717

Show
Ignore:
Timestamp:
05/03/08 19:00:14 (7 months ago)
Author:
dhozac
Message:

Avoid that annoying "uses 32-bit capabilities (legacy support in use)" warning.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/src/capability-compat.h

    r1822 r2717  
    3030 
    3131#endif 
     32 
     33#ifndef _LINUX_CAPABILITY_VERSION_1 
     34#  define _LINUX_CAPABILITY_VERSION_1   _LINUX_CAPABILITY_VERSION 
     35#endif 
     36 
     37#ifndef _LINUX_CAPABILITY_VERSION_2 
     38#  define _LINUX_CAPABILITY_VERSION_2   0x20071026 
     39#endif 
  • trunk/src/rpm-fake.c

    r2693 r2717  
    420420reduceCapabilities() 
    421421{ 
     422  int retried = 0; 
    422423  struct __user_cap_header_struct header; 
    423   struct __user_cap_data_struct user
    424    
    425   header.version = _LINUX_CAPABILITY_VERSION
     424  struct __user_cap_data_struct user[2]
     425   
     426  header.version = _LINUX_CAPABILITY_VERSION_2
    426427  header.pid     = 0; 
    427428 
    428   if (capget(&header, &user)==-1) { 
     429retry: 
     430  if (capget(&header, user)==-1) { 
     431    if (!retried && 
     432        header.version != _LINUX_CAPABILITY_VERSION_2) { 
     433      header.version = _LINUX_CAPABILITY_VERSION_1; 
     434      retried = 1; 
     435      goto retry; 
     436    } 
    429437    perror("capget()"); 
    430438    exit(wrapper_exit_code); 
    431439  } 
    432440 
    433   user.effective   &= ~(1<<CAP_MKNOD); 
    434   user.permitted   &= ~(1<<CAP_MKNOD); 
    435   user.inheritable &= ~(1<<CAP_MKNOD); 
    436  
    437   if (capset(&header, &user)==-1) { 
     441  user[0].effective   &= ~(1<<CAP_MKNOD); 
     442  user[0].permitted   &= ~(1<<CAP_MKNOD); 
     443  user[0].inheritable &= ~(1<<CAP_MKNOD); 
     444 
     445  if (capset(&header, user)==-1) { 
    438446    perror("capset()"); 
    439447    exit(wrapper_exit_code); 
  • trunk/src/vserver-info.c

    r2589 r2717  
    186186verifyCap() 
    187187{ 
     188  int retried = 0; 
    188189  struct __user_cap_header_struct header; 
    189   struct __user_cap_data_struct user; 
    190   header.version = _LINUX_CAPABILITY_VERSION; 
     190  struct __user_cap_data_struct user[2]; 
     191 
     192  header.version = _LINUX_CAPABILITY_VERSION_2; 
    191193  header.pid     = 0; 
    192194 
     
    200202//    return false; 
    201203//  } 
    202    
    203   if (capget(&header, &user)==-1) { 
     204 
     205retry: 
     206  if (capget(&header, user)==-1) { 
     207    if (!retried && 
     208        header.version != _LINUX_CAPABILITY_VERSION_2) { 
     209      header.version = _LINUX_CAPABILITY_VERSION_1; 
     210      retried = 1; 
     211      goto retry; 
     212    } 
    204213    perror("capget()"); 
    205214    return false; 
    206215  } 
    207216 
    208   user.effective   = 0; 
    209   user.permitted   = 0; 
    210   user.inheritable = 0; 
    211  
    212   if (capset(&header, &user)==-1) { 
     217  user[0].effective   = user[1].effective   = 0; 
     218  user[0].permitted   = user[1].permitted   = 0; 
     219  user[0].inheritable = user[1].inheritable = 0; 
     220 
     221  if (capset(&header, user)==-1) { 
    213222    perror("capset()"); 
    214223    return false;