Author: gjb
Date: Wed Dec  5 19:16:12 2018
New Revision: 341603
URL: https://svnweb.freebsd.org/changeset/base/341603

Log:
  MFS12 r341490, r341493:
  
   r341490 (markj):
    MFC r341442, r341443:
    Plug memory disclosures via ptrace(2).
  
   r341493 (garga):
    MFC r341464:
    Restore /var/crash permissions to 0750, as declared in mtree file.
    After r337337 it changed to 0755.
  
  As this would have otherwise been resolved as a post-release EN/SA
  from so@, this does not warrant adding RC4 to the 12.0 schedule.
  
  Approved by:  re (implicit), so
  Sponsored by: The FreeBSD Foundation

Modified:
  releng/12.0/sbin/savecore/Makefile
  releng/12.0/sys/amd64/amd64/machdep.c
  releng/12.0/sys/amd64/ia32/ia32_reg.c
  releng/12.0/sys/arm/arm/machdep_kdb.c
  releng/12.0/sys/fs/procfs/procfs_dbregs.c
  releng/12.0/sys/fs/procfs/procfs_fpregs.c
  releng/12.0/sys/fs/procfs/procfs_regs.c
  releng/12.0/sys/i386/i386/machdep.c
  releng/12.0/sys/kern/sys_process.c
  releng/12.0/sys/sparc64/sparc64/machdep.c
Directory Properties:
  releng/12.0/   (props changed)

Modified: releng/12.0/sbin/savecore/Makefile
==============================================================================
--- releng/12.0/sbin/savecore/Makefile  Wed Dec  5 18:26:40 2018        
(r341602)
+++ releng/12.0/sbin/savecore/Makefile  Wed Dec  5 19:16:12 2018        
(r341603)
@@ -2,7 +2,9 @@
 
 PACKAGE=runtime
 CONFS= minfree
-CONFSDIR=      /var/crash
+VAR_CRASH=     /var/crash
+VAR_CRASH_MODE=        0750
+CONFSDIR=      VAR_CRASH
 PROG=  savecore
 LIBADD=        z xo
 MAN=   savecore.8

Modified: releng/12.0/sys/amd64/amd64/machdep.c
==============================================================================
--- releng/12.0/sys/amd64/amd64/machdep.c       Wed Dec  5 18:26:40 2018        
(r341602)
+++ releng/12.0/sys/amd64/amd64/machdep.c       Wed Dec  5 19:16:12 2018        
(r341603)
@@ -2043,6 +2043,7 @@ fill_regs(struct thread *td, struct reg *regs)
 int
 fill_frame_regs(struct trapframe *tp, struct reg *regs)
 {
+
        regs->r_r15 = tp->tf_r15;
        regs->r_r14 = tp->tf_r14;
        regs->r_r13 = tp->tf_r13;
@@ -2074,6 +2075,8 @@ fill_frame_regs(struct trapframe *tp, struct reg *regs
                regs->r_fs = 0;
                regs->r_gs = 0;
        }
+       regs->r_err = 0;
+       regs->r_trapno = 0;
        return (0);
 }
 

Modified: releng/12.0/sys/amd64/ia32/ia32_reg.c
==============================================================================
--- releng/12.0/sys/amd64/ia32/ia32_reg.c       Wed Dec  5 18:26:40 2018        
(r341602)
+++ releng/12.0/sys/amd64/ia32/ia32_reg.c       Wed Dec  5 19:16:12 2018        
(r341603)
@@ -105,6 +105,8 @@ fill_regs32(struct thread *td, struct reg32 *regs)
        regs->r_eflags = tp->tf_rflags;
        regs->r_esp = tp->tf_rsp;
        regs->r_ss = tp->tf_ss;
+       regs->r_err = 0;
+       regs->r_trapno = 0;
        return (0);
 }
 

Modified: releng/12.0/sys/arm/arm/machdep_kdb.c
==============================================================================
--- releng/12.0/sys/arm/arm/machdep_kdb.c       Wed Dec  5 18:26:40 2018        
(r341602)
+++ releng/12.0/sys/arm/arm/machdep_kdb.c       Wed Dec  5 19:16:12 2018        
(r341603)
@@ -104,6 +104,7 @@ fill_regs(struct thread *td, struct reg *regs)
        regs->r_cpsr = tf->tf_spsr;
        return (0);
 }
+
 int
 fill_fpregs(struct thread *td, struct fpreg *regs)
 {
@@ -134,8 +135,11 @@ set_fpregs(struct thread *td, struct fpreg *regs)
 int
 fill_dbregs(struct thread *td, struct dbreg *regs)
 {
+
+       bzero(regs, sizeof(*regs));
        return (0);
 }
+
 int
 set_dbregs(struct thread *td, struct dbreg *regs)
 {

Modified: releng/12.0/sys/fs/procfs/procfs_dbregs.c
==============================================================================
--- releng/12.0/sys/fs/procfs/procfs_dbregs.c   Wed Dec  5 18:26:40 2018        
(r341602)
+++ releng/12.0/sys/fs/procfs/procfs_dbregs.c   Wed Dec  5 19:16:12 2018        
(r341603)
@@ -112,8 +112,10 @@ procfs_doprocdbregs(PFS_FILL_ARGS)
                        return (EINVAL);
                }
                wrap32 = 1;
-       }
+               memset(&r32, 0, sizeof(r32));
+       } else
 #endif
+               memset(&r, 0, sizeof(r));
        error = PROC(read, dbregs, td2, &r);
        if (error == 0) {
                PROC_UNLOCK(p);

Modified: releng/12.0/sys/fs/procfs/procfs_fpregs.c
==============================================================================
--- releng/12.0/sys/fs/procfs/procfs_fpregs.c   Wed Dec  5 18:26:40 2018        
(r341602)
+++ releng/12.0/sys/fs/procfs/procfs_fpregs.c   Wed Dec  5 19:16:12 2018        
(r341603)
@@ -102,7 +102,6 @@ procfs_doprocfpregs(PFS_FILL_ARGS)
                return (EBUSY);
        }
 
-       /* XXXKSE: */
        td2 = FIRST_THREAD_IN_PROC(p);
 #ifdef COMPAT_FREEBSD32
        if (SV_CURPROC_FLAG(SV_ILP32)) {
@@ -111,8 +110,10 @@ procfs_doprocfpregs(PFS_FILL_ARGS)
                        return (EINVAL);
                }
                wrap32 = 1;
-       }
+               memset(&r32, 0, sizeof(r32));
+       } else
 #endif
+               memset(&r, 0, sizeof(r));
        error = PROC(read, fpregs, td2, &r);
        if (error == 0) {
                PROC_UNLOCK(p);

Modified: releng/12.0/sys/fs/procfs/procfs_regs.c
==============================================================================
--- releng/12.0/sys/fs/procfs/procfs_regs.c     Wed Dec  5 18:26:40 2018        
(r341602)
+++ releng/12.0/sys/fs/procfs/procfs_regs.c     Wed Dec  5 19:16:12 2018        
(r341603)
@@ -102,7 +102,6 @@ procfs_doprocregs(PFS_FILL_ARGS)
                return (EBUSY);
        }
 
-       /* XXXKSE: */
        td2 = FIRST_THREAD_IN_PROC(p);
 #ifdef COMPAT_FREEBSD32
        if (SV_CURPROC_FLAG(SV_ILP32)) {
@@ -111,8 +110,10 @@ procfs_doprocregs(PFS_FILL_ARGS)
                        return (EINVAL);
                }
                wrap32 = 1;
-       }
+               memset(&r32, 0, sizeof(r32));
+       } else
 #endif
+               memset(&r, 0, sizeof(r));
        error = PROC(read, regs, td2, &r);
        if (error == 0) {
                PROC_UNLOCK(p);

Modified: releng/12.0/sys/i386/i386/machdep.c
==============================================================================
--- releng/12.0/sys/i386/i386/machdep.c Wed Dec  5 18:26:40 2018        
(r341602)
+++ releng/12.0/sys/i386/i386/machdep.c Wed Dec  5 19:16:12 2018        
(r341603)
@@ -2817,6 +2817,7 @@ fill_regs(struct thread *td, struct reg *regs)
 int
 fill_frame_regs(struct trapframe *tp, struct reg *regs)
 {
+
        regs->r_fs = tp->tf_fs;
        regs->r_es = tp->tf_es;
        regs->r_ds = tp->tf_ds;
@@ -2832,6 +2833,8 @@ fill_frame_regs(struct trapframe *tp, struct reg *regs
        regs->r_eflags = tp->tf_eflags;
        regs->r_esp = tp->tf_esp;
        regs->r_ss = tp->tf_ss;
+       regs->r_err = 0;
+       regs->r_trapno = 0;
        return (0);
 }
 

Modified: releng/12.0/sys/kern/sys_process.c
==============================================================================
--- releng/12.0/sys/kern/sys_process.c  Wed Dec  5 18:26:40 2018        
(r341602)
+++ releng/12.0/sys/kern/sys_process.c  Wed Dec  5 19:16:12 2018        
(r341603)
@@ -540,6 +540,9 @@ struct ptrace_args {
  *   copyin(uap->addr, &r.reg32, sizeof r.reg32);
  * .. except this is done at runtime.
  */
+#define        BZERO(a, s)             wrap32 ? \
+       bzero(a ## 32, s ## 32) : \
+       bzero(a, s)
 #define        COPYIN(u, k, s)         wrap32 ? \
        copyin(u, k ## 32, s ## 32) : \
        copyin(u, k, s)
@@ -547,6 +550,7 @@ struct ptrace_args {
        copyout(k ## 32, u, s ## 32) : \
        copyout(k, u, s)
 #else
+#define        BZERO(a, s)             bzero(a, s)
 #define        COPYIN(u, k, s)         copyin(u, k, s)
 #define        COPYOUT(k, u, s)        copyout(k, u, s)
 #endif
@@ -572,7 +576,7 @@ sys_ptrace(struct thread *td, struct ptrace_args *uap)
                struct ptrace_lwpinfo32 pl32;
                struct ptrace_vm_entry32 pve32;
 #endif
-               char args[nitems(td->td_sa.args) * sizeof(register_t)];
+               char args[sizeof(td->td_sa.args)];
                int ptevents;
        } r;
        void *addr;
@@ -589,11 +593,17 @@ sys_ptrace(struct thread *td, struct ptrace_args *uap)
        addr = &r;
        switch (uap->req) {
        case PT_GET_EVENT_MASK:
+       case PT_LWPINFO:
+       case PT_GET_SC_ARGS:
+               break;
        case PT_GETREGS:
+               BZERO(&r.reg, sizeof r.reg);
+               break;
        case PT_GETFPREGS:
+               BZERO(&r.fpreg, sizeof r.fpreg);
+               break;
        case PT_GETDBREGS:
-       case PT_LWPINFO:
-       case PT_GET_SC_ARGS:
+               BZERO(&r.dbreg, sizeof r.dbreg);
                break;
        case PT_SETREGS:
                error = COPYIN(uap->addr, &r.reg, sizeof r.reg);
@@ -661,6 +671,7 @@ sys_ptrace(struct thread *td, struct ptrace_args *uap)
 }
 #undef COPYIN
 #undef COPYOUT
+#undef BZERO
 
 #ifdef COMPAT_FREEBSD32
 /*

Modified: releng/12.0/sys/sparc64/sparc64/machdep.c
==============================================================================
--- releng/12.0/sys/sparc64/sparc64/machdep.c   Wed Dec  5 18:26:40 2018        
(r341602)
+++ releng/12.0/sys/sparc64/sparc64/machdep.c   Wed Dec  5 19:16:12 2018        
(r341603)
@@ -1056,6 +1056,7 @@ fill_fpregs(struct thread *td, struct fpreg *fpregs)
        bcopy(pcb->pcb_ufp, fpregs->fr_regs, sizeof(fpregs->fr_regs));
        fpregs->fr_fsr = tf->tf_fsr;
        fpregs->fr_gsr = tf->tf_gsr;
+       fpregs->fr_pad[0] = 0;
        return (0);
 }
 
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to