mirror of
https://github.com/drakkan/sftpgo.git
synced 2025-12-08 15:28:05 +03:00
add a test case for UID/GID limits
This commit is contained in:
@@ -822,7 +822,7 @@ func (u *User) GetFsConfigAsJSON() ([]byte, error) {
|
|||||||
|
|
||||||
// GetUID returns a validate uid, suitable for use with os.Chown
|
// GetUID returns a validate uid, suitable for use with os.Chown
|
||||||
func (u *User) GetUID() int {
|
func (u *User) GetUID() int {
|
||||||
if u.UID <= 0 || u.UID > int(math.Pow(2, 31))-1 {
|
if u.UID <= 0 || u.UID > math.MaxInt32 {
|
||||||
return -1
|
return -1
|
||||||
}
|
}
|
||||||
return u.UID
|
return u.UID
|
||||||
@@ -830,7 +830,7 @@ func (u *User) GetUID() int {
|
|||||||
|
|
||||||
// GetGID returns a validate gid, suitable for use with os.Chown
|
// GetGID returns a validate gid, suitable for use with os.Chown
|
||||||
func (u *User) GetGID() int {
|
func (u *User) GetGID() int {
|
||||||
if u.GID <= 0 || u.GID > int(math.Pow(2, 31))-1 {
|
if u.GID <= 0 || u.GID > math.MaxInt32 {
|
||||||
return -1
|
return -1
|
||||||
}
|
}
|
||||||
return u.GID
|
return u.GID
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
|
"math"
|
||||||
"mime/multipart"
|
"mime/multipart"
|
||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
@@ -419,6 +420,19 @@ func TestUserStatus(t *testing.T) {
|
|||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestUidGidLimits(t *testing.T) {
|
||||||
|
u := getTestUser()
|
||||||
|
u.UID = math.MaxInt32
|
||||||
|
u.GID = math.MaxInt32
|
||||||
|
user, _, err := httpdtest.AddUser(u, http.StatusCreated)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Equal(t, math.MaxInt32, user.GetUID())
|
||||||
|
assert.Equal(t, math.MaxInt32, user.GetGID())
|
||||||
|
|
||||||
|
_, err = httpdtest.RemoveUser(user, http.StatusOK)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
}
|
||||||
|
|
||||||
func TestAddUserNoCredentials(t *testing.T) {
|
func TestAddUserNoCredentials(t *testing.T) {
|
||||||
u := getTestUser()
|
u := getTestUser()
|
||||||
u.Password = ""
|
u.Password = ""
|
||||||
|
|||||||
Reference in New Issue
Block a user