0

I am trying to communicate with the hardware by passing some command line arguments. I have error checking if I pass wrong arguments. But whenever I pass some unrecognized argument I am getting error : ORBIT_SOCKETDIR=/tmp/orbit-root. I opened this location and it has some socket files. Moreover the error checking in my code is working fine and I am exiting when wrong argument encountered. I tried searching on Google but could not find a satisfactory explanation. Can Anyone Help Me here.

Heena Goyal
  • 382
  • 3
  • 17
lokesharo
  • 305
  • 2
  • 11

1 Answers1

0

Happened to me today.

Arguments passed to the program are stored inside something called process environment block. When no arguments are actually passed to main and it's trying to access them in argv it just reads the next elements in the block(I found more info here: https://stackoverflow.com/a/26417129/3922692)

Then I wrote this:

 ⚡⚡⚡  more test.c 
#include <stdio.h>

int main(int argc, char **argv)
{
    int i;
    for(i = 0; i < 100; i++)
    {
        printf("argv[%d] contains %s \n", i, argv[i]);
    }
    return 0;
}

When I run it without arguments:

 ⚡⚡⚡  ./a.out 
argv[0] contains ./a.out 
argv[1] contains (null) 
argv[2] contains ORBIT_SOCKETDIR=/tmp/orbit-ehwas 
argv[3] contains SSH_AGENT_PID=2443 
argv[4] contains TERM=xterm-256color 
argv[5] contains SHELL=/bin/bash 
argv[6] contains XDG_SESSION_COOKIE=3f606f46028152e69e3d858900000009-1422008859.843197-1908595864 
argv[7] contains WINDOWID=39845891 
argv[8] contains GNOME_KEYRING_CONTROL=/tmp/keyring-nNCd02 
argv[9] contains GTK_MODULES=canberra-gtk-module 
argv[10] contains USER=ehwas 
argv[11] contains LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36: 
argv[12] contains SSH_AUTH_SOCK=/tmp/ssh-ELberD2392/agent.2392 
argv[13] contains USERNAME=ehwas 
argv[14] contains DESKTOP_SESSION=openbox 
argv[15] contains PATH=/home/ehwas/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games 
argv[16] contains GDM_XSERVER_LOCATION=local 
argv[17] contains PWD=/home/ehwas 
argv[18] contains LANG=en_US.UTF-8 
argv[19] contains GNOME_KEYRING_PID=2382 
argv[20] contains GDM_LANG=en_US.UTF-8 
argv[21] contains GDMSESSION=openbox 
argv[22] contains SHLVL=1 
argv[23] contains HOME=/home/ehwas 
argv[24] contains LOGNAME=ehwas 
argv[25] contains DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-sP7BGFlECg,guid=fd8e2dfe17f3d2888c471c0e00000026 
argv[26] contains XDG_DATA_DIRS=/usr/local/share/:/usr/share/:/usr/share/gdm/ 
argv[27] contains WINDOWPATH=7 
argv[28] contains DISPLAY=:0.0 
argv[29] contains COLORTERM=gnome-terminal 
argv[30] contains XAUTHORITY=/home/ehwas/.Xauthority 
argv[31] contains _=./a.out 
argv[32] contains (null) 
Segmentation fault

And with arguments:

 ⚡⚡⚡  ./a.out test test test test
argv[0] contains ./a.out 
argv[1] contains test 
argv[2] contains test 
argv[3] contains test 
argv[4] contains test 
argv[5] contains (null) 
argv[6] contains ORBIT_SOCKETDIR=/tmp/orbit-ehwas 
argv[7] contains SSH_AGENT_PID=2443 
argv[8] contains TERM=xterm-256color 
argv[9] contains SHELL=/bin/bash 
argv[10] contains XDG_SESSION_COOKIE=3f606f46028152e69e3d858900000009-1422008859.843197-1908595864 
argv[11] contains WINDOWID=39845891 
argv[12] contains GNOME_KEYRING_CONTROL=/tmp/keyring-nNCd02 
argv[13] contains GTK_MODULES=canberra-gtk-module 
argv[14] contains USER=ehwas 
argv[15] contains LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36: 
argv[16] contains SSH_AUTH_SOCK=/tmp/ssh-ELberD2392/agent.2392 
argv[17] contains USERNAME=ehwas 
argv[18] contains DESKTOP_SESSION=openbox 
argv[19] contains PATH=/home/ehwas/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games 
argv[20] contains GDM_XSERVER_LOCATION=local 
argv[21] contains PWD=/home/ehwas 
argv[22] contains LANG=en_US.UTF-8 
argv[23] contains GNOME_KEYRING_PID=2382 
argv[24] contains GDM_LANG=en_US.UTF-8 
argv[25] contains GDMSESSION=openbox 
argv[26] contains SHLVL=1 
argv[27] contains HOME=/home/ehwas 
argv[28] contains LOGNAME=ehwas 
argv[29] contains DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-sP7BGFlECg,guid=fd8e2dfe17f3d2888c471c0e00000026 
argv[30] contains XDG_DATA_DIRS=/usr/local/share/:/usr/share/:/usr/share/gdm/ 
argv[31] contains WINDOWPATH=7 
argv[32] contains DISPLAY=:0.0 
argv[33] contains COLORTERM=gnome-terminal 
argv[34] contains XAUTHORITY=/home/ehwas/.Xauthority 
argv[35] contains _=./a.out 
argv[36] contains (null) 
Segmentation fault

TLDR: Before using argv one should check what is in argc or at least if argv[1] is null (that means there are no arguments passed)

Community
  • 1
  • 1
ehwas
  • 248
  • 1
  • 9