Quoting Oren Laadan (orenl@xxxxxxxxxxxxxxx): > > > Serge E. Hallyn wrote: > > Quoting Oren Laadan (orenl@xxxxxxxxxxxxxxx): > >> Changelog[v14]: > >> - Define sys_checkpoint(0,...) as asking for a self-checkpoint (Serge) > > > > Thanks. > > > >> - Revert use of 'pr_fmt' to avoid tainting whom includes us (Nathan Lynch) > >> - Explicitly indicate length of UTS fields in header > >> - Discard field 'h->parent' > > > > Nice. > > > >> + uts = utsname(); > >> + ret = cr_write_buffer(ctx, uts->release, __NEW_UTS_LEN); > >> + if (ret < 0) > >> + return ret; > >> + ret = cr_write_buffer(ctx, uts->version, __NEW_UTS_LEN); > >> + if (ret < 0) > >> + return ret; > >> + ret = cr_write_buffer(ctx, uts->machine, __NEW_UTS_LEN); > > > > ... > > > >> + /* FIX: verify compatibility of release, version and machine */ > >> + ret = cr_read_obj_type(ctx, uts_buf, __NEW_UTS_LEN, CR_HDR_BUFFER); > >> + if (ret < 0) > >> + goto out; > >> + ret = cr_read_obj_type(ctx, uts_buf, __NEW_UTS_LEN, CR_HDR_BUFFER); > >> + if (ret < 0) > >> + goto out; > >> + ret = cr_read_obj_type(ctx, uts_buf, __NEW_UTS_LEN, CR_HDR_BUFFER); > > > > The new_utsname fields actually have __NEW_UTS_LEN+1 chars. So > > if hostname happens to be full (__NEW_UTS_LEN chars plus a final > > null), won't you end up without the trailing null here? > > Using cr_write_buffer() instead of cr_write_string() ensures that it > saves and restores exactly __NEW_UTS_LEN bytes, regardless of the null, > so I'd think it's safe (yeah, we could save a few bytes - like a drop > in the ocean). No, I'm saying you have one less byte here than what is in the actual kernel structures. Each of those has 65 bytes. __NEW_UTS_LEN is 64. I realize that these fields should never get that long, but it's a risk. -serge _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/containers