mirror of
https://github.com/kovidgoyal/kitty
synced 2026-07-20 23:44:59 +02:00
Some cleanups
This commit is contained in:
@@ -772,7 +772,7 @@ func (dnd *dnd) on_drop_data(cmd DC) error {
|
|||||||
}
|
}
|
||||||
idx := cmd.X - 1
|
idx := cmd.X - 1
|
||||||
if idx < 0 || idx > len(drop_status.offered_mimes) {
|
if idx < 0 || idx > len(drop_status.offered_mimes) {
|
||||||
return fmt.Errorf("terminal sent drop data for a index outside the list of accepted MIMEs")
|
return fmt.Errorf("terminal sent drop data for an index (%d) outside the list of accepted MIMEs (length: %d)", idx, len(drop_status.offered_mimes))
|
||||||
}
|
}
|
||||||
mime := drop_status.offered_mimes[idx]
|
mime := drop_status.offered_mimes[idx]
|
||||||
dest := dnd.drop_dests[mime]
|
dest := dnd.drop_dests[mime]
|
||||||
|
|||||||
@@ -2067,7 +2067,11 @@ populate_dir_entries(Window *w, DragRemoteItem *ri) {
|
|||||||
if (len > 0) {
|
if (len > 0) {
|
||||||
char *name = strndup(ptr, len);
|
char *name = strndup(ptr, len);
|
||||||
if (!name) abrt(ENOMEM, "out of memory processing drag source item directory entries");
|
if (!name) abrt(ENOMEM, "out of memory processing drag source item directory entries");
|
||||||
|
#ifdef _WIN32
|
||||||
|
for (size_t i = 0; i < len; i++) if (name[i] == '/' || name[i] == '\\') name[i] = '_';
|
||||||
|
#else
|
||||||
for (size_t i = 0; i < len; i++) if (name[i] == '/') name[i] = '_';
|
for (size_t i = 0; i < len; i++) if (name[i] == '/') name[i] = '_';
|
||||||
|
#endif
|
||||||
if (len == 1 && name[0] == '.') name[0] = '_';
|
if (len == 1 && name[0] == '.') name[0] = '_';
|
||||||
if (len == 2 && name[0] == '.' && name[1] == '.') name[0] = '_';
|
if (len == 2 && name[0] == '.' && name[1] == '.') name[0] = '_';
|
||||||
child->dir_entry_name = name;
|
child->dir_entry_name = name;
|
||||||
@@ -2135,6 +2139,10 @@ add_payload(Window *w, DragRemoteItem *ri, bool has_more, const uint8_t *payload
|
|||||||
ri->data_capacity = ri->data_sz + 1;
|
ri->data_capacity = ri->data_sz + 1;
|
||||||
}
|
}
|
||||||
ri->data[ri->data_sz] = 0;
|
ri->data[ri->data_sz] = 0;
|
||||||
|
// We allow arbitrary symlinks here even though they can lead
|
||||||
|
// outside the destination directory. This is safe because we
|
||||||
|
// only create files with open(O_EXCL) and mkdirat and symlinkat
|
||||||
|
// all fail with EEXIST if a symlink exists at the path.
|
||||||
if (symlinkat((char*)ri->data, dirfd, ri->dir_entry_name) != 0) abrt(errno, "failed to create symlink for drag source item");
|
if (symlinkat((char*)ri->data, dirfd, ri->dir_entry_name) != 0) abrt(errno, "failed to create symlink for drag source item");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|||||||
Reference in New Issue
Block a user