Skip to content

Commit 4153245

Browse files
authored
fix(drivers): free space underflow if used larger than total space (#1407)
1 parent 6fe9af7 commit 4153245

File tree

7 files changed

+13
-24
lines changed

7 files changed

+13
-24
lines changed

drivers/123/driver.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -260,10 +260,7 @@ func (d *Pan123) GetDetails(ctx context.Context) (*model.StorageDetails, error)
260260
}
261261
total := userInfo.Data.SpacePermanent + userInfo.Data.SpaceTemp
262262
return &model.StorageDetails{
263-
DiskUsage: model.DiskUsage{
264-
TotalSpace: total,
265-
FreeSpace: total - userInfo.Data.SpaceUsed,
266-
},
263+
DiskUsage: *model.NewDiskUsageFromUsedAndTotal(userInfo.Data.SpaceUsed, total),
267264
}, nil
268265
}
269266

drivers/aliyundrive/driver.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -337,10 +337,7 @@ func (d *AliDrive) GetDetails(ctx context.Context) (*model.StorageDetails, error
337337
used := utils.Json.Get(res, "drive_used_size").ToUint64()
338338
total := utils.Json.Get(res, "drive_total_size").ToUint64()
339339
return &model.StorageDetails{
340-
DiskUsage: model.DiskUsage{
341-
TotalSpace: total,
342-
FreeSpace: total - used,
343-
},
340+
DiskUsage: *model.NewDiskUsageFromUsedAndTotal(used, total),
344341
}, nil
345342
}
346343

drivers/baidu_netdisk/util.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -390,10 +390,7 @@ func (d *BaiduNetdisk) quota(ctx context.Context) (*model.DiskUsage, error) {
390390
if err != nil {
391391
return nil, err
392392
}
393-
return &model.DiskUsage{
394-
TotalSpace: resp.Total,
395-
FreeSpace: resp.Total - resp.Used,
396-
}, nil
393+
return model.NewDiskUsageFromUsedAndTotal(resp.Used, resp.Total), nil
397394
}
398395

399396
// func encodeURIComponent(str string) string {

drivers/cloudreve_v4/driver.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -349,10 +349,7 @@ func (d *CloudreveV4) GetDetails(ctx context.Context) (*model.StorageDetails, er
349349
return nil, err
350350
}
351351
return &model.StorageDetails{
352-
DiskUsage: model.DiskUsage{
353-
TotalSpace: r.Total,
354-
FreeSpace: r.Total - r.Used,
355-
},
352+
DiskUsage: *model.NewDiskUsageFromUsedAndTotal(r.Used, r.Total),
356353
}, nil
357354
}
358355

drivers/google_drive/driver.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -189,10 +189,7 @@ func (d *GoogleDrive) GetDetails(ctx context.Context) (*model.StorageDetails, er
189189
return nil, err
190190
}
191191
return &model.StorageDetails{
192-
DiskUsage: model.DiskUsage{
193-
TotalSpace: total,
194-
FreeSpace: total - used,
195-
},
192+
DiskUsage: *model.NewDiskUsageFromUsedAndTotal(used, total),
196193
}, nil
197194
}
198195

drivers/ilanzou/driver.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -412,10 +412,7 @@ func (d *ILanZou) GetDetails(ctx context.Context) (*model.StorageDetails, error)
412412
total := utils.Json.Get(res, "map", "totalSize").ToUint64() * 1024
413413
used := utils.Json.Get(res, "map", "usedSize").ToUint64() * 1024
414414
return &model.StorageDetails{
415-
DiskUsage: model.DiskUsage{
416-
TotalSpace: total,
417-
FreeSpace: total - used,
418-
},
415+
DiskUsage: *model.NewDiskUsageFromUsedAndTotal(used, total),
419416
}, nil
420417
}
421418

internal/model/storage.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,13 @@ type DiskUsage struct {
6161
FreeSpace uint64 `json:"free_space"`
6262
}
6363

64+
func NewDiskUsageFromUsedAndTotal(used, total uint64) *DiskUsage {
65+
return &DiskUsage{
66+
TotalSpace: max(used, total),
67+
FreeSpace: total - min(used, total),
68+
}
69+
}
70+
6471
type StorageDetails struct {
6572
DiskUsage
6673
}

0 commit comments

Comments
 (0)