diff options
| author | Russ Allbery <rra@stanford.edu> | 2007-10-05 20:34:30 +0000 | 
|---|---|---|
| committer | Russ Allbery <rra@stanford.edu> | 2007-10-05 20:34:30 +0000 | 
| commit | 64cae8e20ec8756a4c8503466a8754cecf417aa6 (patch) | |
| tree | 4f34a6f19df1974e2a223e55a67d20707e316557 | |
| parent | dbd33500b645f9caaa6dbb7d18a3f4932b53847a (diff) | |
Fix the keytab attribute handling to call getattr and setattr instead of
just attr to match the actual API.
| -rw-r--r-- | client/keytab.c | 3 | ||||
| -rwxr-xr-x | tests/data/cmd-fake | 65 | 
2 files changed, 45 insertions, 23 deletions
| diff --git a/client/keytab.c b/client/keytab.c index 51b3889..02533f8 100644 --- a/client/keytab.c +++ b/client/keytab.c @@ -30,7 +30,7 @@ set_sync(struct remctl *r, const char *type, const char *name)      int status;      command[0] = type; -    command[1] = "attr"; +    command[1] = "getattr";      command[2] = "keytab";      command[3] = name;      command[4] = "sync"; @@ -39,6 +39,7 @@ set_sync(struct remctl *r, const char *type, const char *name)      if (status != 0)          return 0;      if (data == NULL || strstr(data, "kaserver\n") == NULL) { +        command[1] = "setattr";          command[5] = "kaserver";          command[6] = NULL;          status = run_command(r, command, NULL, NULL); diff --git a/tests/data/cmd-fake b/tests/data/cmd-fake index e363651..7cde65e 100755 --- a/tests/data/cmd-fake +++ b/tests/data/cmd-fake @@ -7,12 +7,35 @@  command="$1"  shift  type="$1" -if [ "$1" != "keytab" ] ; then -    echo "Unknown object type $1" >&2 +shift +if [ "$type" != "keytab" ] ; then +    echo "Unknown object type $type" >&2      exit 1  fi -shift -if [ "$command" = "attr" ] ; then + +case "$command" in +getattr) +    if [ -n "$3" ] ; then +        echo "Too many arguments" >&2 +        exit 1 +    fi +    if [ "$2" != sync ] ; then +        echo "Unknown attribute $2" >&2 +        exit 1 +    fi +    case "$1" in +    service/fake-srvtab) +        if [ -f sync-kaserver ] ; then +            echo "kaserver" +        fi +        ;; +    *) +        echo "Looking at sync attribute of wrong keytab" >&2 +        exit 1 +        ;; +    esac +    ;; +setattr)      if [ -n "$4" ] ; then          echo "Too many arguments" >&2          exit 1 @@ -21,27 +44,13 @@ if [ "$command" = "attr" ] ; then          echo "Unknown attribute $2" >&2          exit 1      fi -fi -if [ "$command" != "attr" ] && [ -n "$2" ] ; then -    echo "Too many arguments" >&2 -    exit 1 -fi - -case "$command" in -attr)      case "$1" in      service/fake-srvtab) -        if [ -n "$3" ] ; then -            if [ "$3" != "kaserver" ] ; then -                echo "Invalid attribute value $3" >&2 -                exit 1 -            fi -            touch sync-kaserver -        else -            if [ -f sync-kaserver ] ; then -                echo "kaserver" -            fi +        if [ "$3" != "kaserver" ] ; then +            echo "Invalid attribute value $3" >&2 +            exit 1          fi +        touch sync-kaserver          ;;      *)          echo "Looking at sync attribute of wrong keytab" >&2 @@ -50,6 +59,10 @@ attr)      esac      ;;  get) +    if [ -n "$2" ] ; then +        echo "Too many arguments" >&2 +        exit 1 +    fi      case "$1" in      service/fake-test)          cat data/fake-data @@ -66,6 +79,10 @@ get)      esac      ;;  show) +    if [ -n "$2" ] ; then +        echo "Too many arguments" >&2 +        exit 1 +    fi      if [ "$1" = "service/fake-test" ] ; then          echo "Some stuff about $1"          exit 0 @@ -75,6 +92,10 @@ show)      fi      ;;  expires) +    if [ -n "$2" ] ; then +        echo "Too many arguments" >&2 +        exit 1 +    fi      echo "Expiration date of $1"      exit 0      ;; | 
