Print this page
OS-3822 OS-3780 creates a life of fd crime in libproc


2682                     (dmp = core_find_data(P, aout.e_elf, &rl)) != NULL) {
2683                         (void) strncpy(tmp->map_pmap.pr_mapname,
2684                             execname, PRMAPSZ);
2685                         tmp->map_pmap.pr_mapname[PRMAPSZ - 1] = '\0';
2686                         (void) strncpy(dmp->map_pmap.pr_mapname,
2687                             execname, PRMAPSZ);
2688                         dmp->map_pmap.pr_mapname[PRMAPSZ - 1] = '\0';
2689                 }
2690 
2691                 if ((P->map_exec = tmp) != NULL &&
2692                     (fp = malloc(sizeof (file_info_t))) != NULL) {
2693 
2694                         (void) memset(fp, 0, sizeof (file_info_t));
2695 
2696                         list_link(fp, &P->file_head);
2697                         tmp->map_file = fp;
2698                         P->num_files++;
2699 
2700                         fp->file_ref = 1;
2701                         fp->file_fd = -1;

2702 
2703                         fp->file_lo = malloc(sizeof (rd_loadobj_t));
2704                         fp->file_lname = strdup(execname);
2705 
2706                         if (fp->file_lo)
2707                                 *fp->file_lo = rl;
2708                         if (fp->file_lname)
2709                                 fp->file_lbase = basename(fp->file_lname);
2710                         if (fp->file_rname)
2711                                 fp->file_rbase = basename(fp->file_rname);
2712 
2713                         (void) strcpy(fp->file_pname,
2714                             P->mappings[0].map_pmap.pr_mapname);
2715                         fp->file_map = tmp;
2716 
2717                         Pbuild_file_symtab(P, fp);
2718 
2719                         if (dmp != NULL) {
2720                                 dmp->map_file = fp;
2721                                 fp->file_ref++;




2682                     (dmp = core_find_data(P, aout.e_elf, &rl)) != NULL) {
2683                         (void) strncpy(tmp->map_pmap.pr_mapname,
2684                             execname, PRMAPSZ);
2685                         tmp->map_pmap.pr_mapname[PRMAPSZ - 1] = '\0';
2686                         (void) strncpy(dmp->map_pmap.pr_mapname,
2687                             execname, PRMAPSZ);
2688                         dmp->map_pmap.pr_mapname[PRMAPSZ - 1] = '\0';
2689                 }
2690 
2691                 if ((P->map_exec = tmp) != NULL &&
2692                     (fp = malloc(sizeof (file_info_t))) != NULL) {
2693 
2694                         (void) memset(fp, 0, sizeof (file_info_t));
2695 
2696                         list_link(fp, &P->file_head);
2697                         tmp->map_file = fp;
2698                         P->num_files++;
2699 
2700                         fp->file_ref = 1;
2701                         fp->file_fd = -1;
2702                         fp->file_dbgfile = -1;
2703 
2704                         fp->file_lo = malloc(sizeof (rd_loadobj_t));
2705                         fp->file_lname = strdup(execname);
2706 
2707                         if (fp->file_lo)
2708                                 *fp->file_lo = rl;
2709                         if (fp->file_lname)
2710                                 fp->file_lbase = basename(fp->file_lname);
2711                         if (fp->file_rname)
2712                                 fp->file_rbase = basename(fp->file_rname);
2713 
2714                         (void) strcpy(fp->file_pname,
2715                             P->mappings[0].map_pmap.pr_mapname);
2716                         fp->file_map = tmp;
2717 
2718                         Pbuild_file_symtab(P, fp);
2719 
2720                         if (dmp != NULL) {
2721                                 dmp->map_file = fp;
2722                                 fp->file_ref++;